背景:
以前要寫軟體的時候,在編寫使用者配置這一塊時,由于存檔資料庫不靠譜或大題小作,是以一般是存在文本中。
一開始是一個檔案儲存一個配置(圖個file.read與file.write的操作簡單)
由于軟體經常更新,使用者的配置也會不停的增加,又得相容以前,又要新增加,之後的配置又用了分隔與換行來來儲存多條配置。
重複多了之後,多少感覺到麻煩~~~
解決:
是以,對于dbimport,你看早期的版本,對于使用者的資料庫連結,也沒儲存配置,說白了就是懶啊。
後來有使用者反應要增加,加之cyq.data的文本資料庫功能相對越來越完善,以及使用上也友善了,是以就增加上去了。
是以今天就以這個為執行個體,講解一下是怎麼友善法:
對于dbimport來說,有兩個輸入框,為了友善存檔及下次啟動,需要儲存下并于下次啟動時還原:

實戰如下:
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;}
}
說明:
表名: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.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();
}
5:一切就緒,f5運作後,軟體目錄下就多了一個檔案(文本資料存存檔json或xml格式資料):
這裡提一下,如果文本資料庫連結不指定ts=0,在同一目錄下會建立資料庫結構:
示例就到這裡結束了。
對于codefirst,是支援所有資料庫,但是又有些許差別:
如果是對于sqlite,mssql,oracle,mysql等,由于資料是肯定是存到資料庫的,是以codefirst編碼運作後,肯定是會建立表結構到資料庫中,才能存儲資料。
意思就是,如果有資料庫字段變化,可能需要到資料庫裡修改對應的字段;
而文本資料庫,如果是增加或減少屬性字段,則完全無事,如果是删除或修改字段名稱,如果字段的資料不要,則也無事,如果原字段資料需要,自己打開事本,批量替換一下,也是相當友善。
總體來說,個人覺的codefirst的操作方式,還是文本資料庫來的實在與友善~~~ 而其它資料庫,雖然如果中間變更,還是要變更,那就又回到codelast了。。。