文本資料庫ORM應用CodeFirst體驗

來源:互聯網
上載者:User

還記得,舊舊前發布過一篇文章:文本資料庫--.Net界未來的一朵奇葩,引爆超過百條的評論,說明大夥對文本資料庫,還是情有所屬的。經過多年的沉澱,在文本的操作上,已經有了些規模,因此,本文寫出來和大夥分享一下。 一:Code First 開始: 1:下載CYQ.Data V5,:http://www.cyqdata.com/download/article-detail-4262:解壓就一個dll,項目添加引用即可。3:既然是Code First,那我們就直接寫實體類,樣本如下:    public class Users : CYQ.Data.Orm.OrmBase    {        public Users()        {            this.SetInit(this, "Users", "Txt Path={0}");        }        public int ID {get;set;}        public string UserName {get;set;}        public string Password {get;set;}    } 說明兩個點:1,繼承自OrmBase;2,建構函式裡指定表名“Users”和資料庫連結Txt Path={0})。 資料庫連結說明{0}代表根目錄):文本資料庫json儲存方式):Txt Path={0}Xml資料庫xml儲存方式) :Xml Path={0}其它資料庫,就是各資料庫的連結了或配置項了。 OK,現在就可以實操增刪改查了,下面輕輕的講一下。 二:Code First 代碼執行個體 1:插入與更新代碼和圖如下:650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131228/13132A262-0.jpg" border="0" align="absmiddle" alt="" /> 代碼說明:左側是增加和更新的代碼,右側是一簡單的樣本操作winform介面,這裡有兩重點說明。
1:為啥實體類要用using包含操作?對於文本的操作,內部機制是在記憶體操作的,直到調用Disponse,才寫到文本,因此,用using就是為了結束時調用Disponse寫到檔案去的。2:SetAutoParentControl是什麼東東?當控制項名按約束起名:為3字母+屬性名稱,如txtUserName,txtPassword時,可以採用自動取值法,這樣你拉N個控制項上去,代碼也不用改變的。傳進this就是form本身,orm會遍曆form下的控制項進行取值。 2:對於其它Orm功能,暫不詳寫了,下載裡有api文檔說明,這裡僅列出介面: /// <summary>    /// 資料操作公用介面    /// </summary>    /// <typeparam name="T"></typeparam>    internal interface ICommon:IDisposable    {        bool Insert();        bool Insert(InsertOp option);        bool Insert(bool autoSetValue);        bool Insert(bool autoSetValue, InsertOp option);        
        bool Update();        bool Update(object where);        bool Update(object where, bool autoSetValue);        bool Delete();        bool Delete(object where);             bool Fill(object where);        MDataTable Select();        MDataTable Select(string where);        MDataTable Select(int topN, object where);        MDataTable Select(int pageIndex, int pageSize, string where, out int count);        int GetCount(string where);        bool Exists(string where);        #region UI介面        void GetFrom(object control);        void GetFrom(object control, object value);        bool GetFromJson(string jsonOrFileName);        void SetAutoParentControl(object parent, params object[] otherParent);        void SetAutoPrefix(string autoPrefix, params string[] otherPrefix);        void SetSelectColumns(params object[] columnNames);        void SetTo(object control);        void SetTo(object control, object value, bool isControlEnabled);        void SetTo(object control, object value);        void SetToAll(params object[] parentControls);        #endregion        string TableName { get; set; }        string DebugInfo { get; }    } 三:基礎說明解答 1:表從哪來、資料存哪?系統在初始化時,會根據表名和連結的地址,會根據屬性名稱自動產生相應的表結構在地址目錄,並且以json或xml方式儲存資料。 2:where支援sql?支援的,不過對於txt,xml,內建實現了最基礎的sql解析,可以滿足>,>=,<,<=,=,is null,is not null,like,order by 等基本本詢,不支援的有:函數,或group by等語句。 3:實用情境 有時候,資料並不大,用access太糾心,用sqlite伺服器安全設定又不允許,用mssql又覺得殺牛不用牛刀,那txt,xml就該出手了。
情境一:比如一簡單的設定檔,你寫個實體類,就可以輕鬆的操作了,不用建啥資料庫表 。
情境二:Code First的目的,當你需要快速構建代碼時,直接就用txt就上了,然後業務代碼就可以開始寫了,不用等DBA建完庫。
後期可根據需要,修改web.config的連結轉到mssql,mysql,oracle等資料庫,業務代碼不變的喲。
當然了,this.SetInit(this, "Users", "Conn");應該這麼寫,對應webconfig的Conn配置項。
情境三:對於wp7開發,直接操作txt,還是很合理的。  4:多資料庫相容性用過CYQ.Data的朋友都知道,支援多資料庫是非常輕鬆過度的,現在你玩txt,輕鬆換下連結就到mssql等其它資料庫了,所以玩好一個,其它資料庫同樣是相容的。

感興趣的朋友,可以玩一玩,過過Code First的癮!!! 

本文出自 “路過秋天” 部落格,請務必保留此出處http://cyq1162.blog.51cto.com/2127378/894380

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.