經過多年的沉澱,在文本的操作上,已經有了些規模,是以,本文寫出來和大夥分享一下。
一:code first 開始:
2:解壓就一個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:插入與更新代碼和圖如下:
代碼說明:
左側是增加和更新的代碼,右側是一簡單的示例操作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:多資料庫相容性
用過
感興趣的朋友,可以玩一玩,過過code first的瘾!!!
版權聲明:本文原創發表于部落格園,作者為路過秋天,原文連結:
http://www.cnblogs.com/cyq1162/archive/2012/06/10/2543960.html