天天看點

周末一起用文本資料庫玩玩Code First

經過多年的沉澱,在文本的操作上,已經有了些規模,是以,本文寫出來和大夥分享一下。

一:code first 開始:

2:解壓就一個dll,項目添加引用即可。

3:既然是code first,那我們就直接寫實體類,示例如下:

周末一起用文本資料庫玩玩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;}

    }

周末一起用文本資料庫玩玩Code First

說明兩個點:

1,繼承自ormbase;

2,構造函數裡指定表名“users”和資料庫連結(txt path={0})。

資料庫連結說明({0}代表根目錄):

文本資料庫(json存儲方式):txt path={0}

xml資料庫(xml存儲方式) :xml path={0}

其它資料庫,就是各資料庫的連結了或配置項了。

ok,現在就可以實操增删改查了,下面輕輕的講一下。

二:code first 代碼執行個體

1:插入與更新代碼和圖如下:

代碼說明:

周末一起用文本資料庫玩玩Code First

左側是增加和更新的代碼,右側是一簡單的示例操作winform界面,這裡有兩重點說明。

1:為啥實體類要用using包含操作?

對于文本的操作,内部機制是在記憶體操作的,直到調用disponse,才寫到文本,是以,用using就是為了結束時調用disponse寫到檔案去的。

2:setautoparentcontrol是什麼東東?

當控件名按限制起名:為3字母+屬性名,如txtusername,txtpassword時,可以采用自動取值法,

這樣你拉n個控件上去,代碼也不用改變的。

傳進this就是form本身,orm會周遊form下的控件進行取值。

周末一起用文本資料庫玩玩Code First

2:對于其它orm功能,暫不詳寫了,下載下傳裡有api文檔說明,這裡僅列出接口:

周末一起用文本資料庫玩玩Code First

 /// <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; }

周末一起用文本資料庫玩玩Code First

三:基礎說明解答

1:表從哪來、資料存哪?

系統在初始化時,會根據表名和連結的位址,會根據屬性名稱自動生成相應的表結構在位址目錄,并且以json或xml方式存儲資料。

2:where支援sql?

支援的,不過對于txt,xml,内置實作了最基礎的sql解析,可以滿足>,>=,<,<=,=,is null,is not null,like,order by 等基本本詢,不支援的有:函數,或group by等語句。

3:實用場景

周末一起用文本資料庫玩玩Code First

有時候,資料并不大,用access太糾心,用sqlite伺服器安全設定又不允許,用mssql又覺得殺牛不用牛刀,那txt,xml就該出手了。

場景一:比如一簡單的配置檔案,你寫個實體類,就可以輕松的操作了,不用建啥資料庫表 。

場景二:code first的目的,當你需要快速建構代碼時,直接就用txt就上了,然後業務代碼就可以開始寫了,不用等dba建完庫。

後期可根據需要,修改web.config的連結轉到mssql,mysql,oracle等資料庫,業務代碼不變的喲。

當然了,this.setinit(this, "users", "conn");應該這麼寫,對應webconfig的conn配置項。

場景三:對于wp7開發,直接操作txt,還是很合理的。

周末一起用文本資料庫玩玩Code First

4:多資料庫相容性

用過

感興趣的朋友,可以玩一玩,過過code first的瘾!!!

版權聲明:本文原創發表于部落格園,作者為路過秋天,原文連結:

http://www.cnblogs.com/cyq1162/archive/2012/06/10/2543960.html