背景:
以前要寫軟件的時候,在編寫用戶配置這一塊時,由於存檔數據庫不靠譜或大題小作,所以一般是存在文本中。
一開始是一個文件保存一個配置(圖個File.Read與File.Write的操作簡單)
由於軟件經常升級,用戶的配置也會不停的增加,又得兼容以前,又要新增加,之后的配置又用了分隔與換行來來保存多條配置。
重復多了之后,多少感覺到麻煩~~~
一開始是一個文件保存一個配置(圖個File.Read與File.Write的操作簡單)
由於軟件經常升級,用戶的配置也會不停的增加,又得兼容以前,又要新增加,之后的配置又用了分隔與換行來來保存多條配置。
重復多了之后,多少感覺到麻煩~~~
解決:
所以,對於DBImport,你看早期的版本,對於用戶的數據庫鏈接,也沒保存配置,說白了就是懶啊。
后來有用戶反應要增加,加之CYQ.Data的文本數據庫功能相對越來越完善,以及使用上也方便了,所以就增加上去了。
后來有用戶反應要增加,加之CYQ.Data的文本數據庫功能相對越來越完善,以及使用上也方便了,所以就增加上去了。
所以今天就以這個為實例,講解一下是怎么方便法:
對於DBImport來說,有兩個輸入框,為了方便存檔及下次啟動,需要保存下並於下次啟動時還原:
實戰如下:
1:用入CYQ.Data.dll V5版本的。
2:CodeFirst編寫個實體:
class Config : CYQ.Data.Orm.OrmBase
{
public Config()
{
base.SetInit( this, " Config ", " txt path={0};ts=0 ");
}
private int ID{get;set;}
private string Key{get;set;}
public string Value{get;set;}
}
{
public Config()
{
base.SetInit( this, " Config ", " txt path={0};ts=0 ");
}
private int ID{get;set;}
private string Key{get;set;}
public string Value{get;set;}
}
說明:
表名:Config;
{0}:代碼根目錄,即軟件運行目錄;
ts=0:新增的識別參數,不創建Config.ts的表結構文件。
3:接下來就是按鈕點擊事件成功后,把數據為鏈接保存:
//
保存鏈接字符串。
using (Config config = new Config())
{
if (config.Fill( " key='ConnFrom' "))
{
config.Value = connFrom;
config.Update();
}
else
{
config.Key = " ConnFrom ";
config.Value = connFrom;
config.Insert(InsertOp.None);
}
}
using (Config config = new Config())
{
if (config.Fill( " key='ConnFrom' "))
{
config.Value = connFrom;
config.Update();
}
else
{
config.Key = " ConnFrom ";
config.Value = connFrom;
config.Insert(InsertOp.None);
}
}
如果鏈接已存在,就是更新,如果不存在,就是插入了。
4:軟件初運行的時候檢測數據是否存在,並設置初始值還原:
using (Config config =
new Config())
{
if (config.Fill( " Key='ConnFrom' "))
{
txtConnFrom.Text = config.Value.ToString();
}
if (config.Fill( " Key='ConnTo' "))
{
txtConnTo.Text = config.Value.ToString();
}
}
{
if (config.Fill( " Key='ConnFrom' "))
{
txtConnFrom.Text = config.Value.ToString();
}
if (config.Fill( " Key='ConnTo' "))
{
txtConnTo.Text = config.Value.ToString();
}
}
5:一切就緒,F5運行后,軟件目錄下就多了一個文件(文本數據存存檔json或xml格式數據):
這里提一下,如果文本數據庫鏈接不指定ts=0,在同一目錄下會創建數據庫結構:
示例就到這里結束了。
對於CodeFirst,是支持所有數據庫,但是又有些許區別:
如果是對於sqlite,mssql,oracle,mysql等,由於數據是肯定是存到數據庫的,所以CodeFirst編碼運行后,肯定是會創建表結構到數據庫中,才能存儲數據。
意思就是,如果有數據庫字段變化,可能需要到數據庫里修改對應的字段;
而文本數據庫,如果是增加或減少屬性字段,則完全無事,如果是刪除或修改字段名稱,如果字段的數據不要,則也無事,如果原字段數據需要,自己打開事本,批量替換一下,也是相當方便。
總體來說,個人覺的CodeFirst的操作方式,還是文本數據庫來的實在與方便~~~ 而其它數據庫,雖然如果中間變更,還是要變更,那就又回到CodeLast了。。。