CodeFirst實戰:用文本數據庫存檔軟件配置


背景:

以前要寫軟件的時候,在編寫用戶配置這一塊時,由於存檔數據庫不靠譜或大題小作,所以一般是存在文本中。
一開始是一個文件保存一個配置(圖個File.Read與File.Write的操作簡單)
由於軟件經常升級,用戶的配置也會不停的增加,又得兼容以前,又要新增加,之后的配置又用了分隔與換行來來保存多條配置。
重復多了之后,多少感覺到麻煩~~~

 

解決:

所以,對於DBImport,你看早期的版本,對於用戶的數據庫鏈接,也沒保存配置,說白了就是懶啊。
后來有用戶反應要增加,加之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;}
    }

說明:

表名: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);
                        }
                    }

如果鏈接已存在,就是更新,如果不存在,就是插入了。

 

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了。。。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM