.Net SQlite 開發Tips

來源:互聯網
上載者:User

標籤:

最近在做SQLite開發,開發環境是VS2010+ SQLite Ado.Net data Provider。這套Data Provider程式是基於System.Data.SQLite 1.0.66版本,下面就總結一下開發SQLite過程中的經驗。

1.程式部署報錯

因為SQLite Ado.Net data Provider會將常用dll註冊到GAC,所以在本機運行時一般不會有問題,但是部署到別的機器就會報錯。這時需要做兩個操作:

  • 將System.Data.SQLite.dll、System.Data.SQLite.Linq.dll等幾個相關dll拷貝到應用程式目錄下。
  • 將*.exe.config中的connection stirng絕對路徑改為相對路徑。
  • *.exe.config檔案需要添加如下資訊:
<system.data>    <DbProviderFactories>      <remove invariant="System.Data.SQLite"/>      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite,Culture=neutral, PublicKeyToken=db937bc2d44ff139″ />    </DbProviderFactories>  </system.data>
2.資料庫清理(VACUUM)當資料庫中的一個或多個資料表存在大量的插入、更新和刪除等操作時,將會有大量的磁碟空間被已刪除的資料所佔用。在沒有執行VACUUM命令之前,SQLite並沒有將它們歸還於作業系統。由於該類資料表中的資料存放區非常分散,因此在查詢時,無法得到更好的批量IO讀取效果,從而影響了查詢效率。 VACUUM命令在完成資料清理時採用了和PostgreSQL相同的策略,即建立一個和當前資料庫檔案相同大小的新資料庫檔案,之後再將該資料庫檔案中的資料有組織的匯入到新檔案中,其中已經刪除的資料區塊將不會被匯入,在完成匯入後,收縮新資料庫檔案的尺寸到適當的大小。 在SQLite中,僅支援清理當前串連中的主要資料庫,而不能清理其它Attached資料庫。可以使用VACUUM的方法對sqlite資料庫進行清理。3.外鍵的Delete Cascade不起作用

使用SQLite Ado.Net data Provider的Designer工具匯入*.db檔案時,外鍵的Cascade資訊沒能正確匯入。這時需要在edmx編輯介面手動進行修改。在*.edmx視窗選擇連接線,在Property視窗手動修改End1 OnDelete屬性為Cascade。修改完成後發現cascade有時生效,有時不生效。這時因為如果*.db庫沒載入進記憶體,cascade就不生效。因此,如果希望cascade生效,還要將關聯的表手動載入(有點像Hibernate的機制),代碼如下:

if(!t1.t11.IsLoaded)    t1.t11.Load();

這時t1表中的一行刪除時,t11表中的相關資料才會跟著被刪除。但是這樣也造成了SQLite效能的下降,具體還要根據業務需求來進行取捨。

4.Nullable<long> 非空類型 如果在SQLite中不特別設定的話,數字列映射的屬性對象是Nullabe型的,需要在資料庫中設定為非空。

.Net SQlite 開發Tips

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.