基於 SQLite 數據庫的 C# 實體模型的實現


在 C# 中使用實體模型(Entity Framework)一般使用 MSSQL 數據庫,這也是 vs2010 的默認方式。

SQLite 作為一種輕型數據庫,實現了 SQL92 標准的大部分規定,利用 .net 連接庫,可以與實體模型配合使用。以下是需要 准備的環境:
  1. Vs2010 + .Net Framework 4
  2. System.Data.SQLite,下載地址。開發環境需要安裝 Setups for 32-bit Windows (.NET Framework 4.0),發布時只需要打包  Precompiled Binaries for 32-bit Windows (.NET Framework 4.0)中的兩個文件(System.Data.SQLite.dll 和 System.Data.SQLite.Linq.dll)。
  3. 如果需要從模型生成 DDL,需要下載 SSDLToSQLite3,解壓縮后放到 C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen(隨 Vs2010 安裝位置有所不同)。
  4. EF Power Tools Beta 3,在 Vs2010 的擴展管理器中下載安裝。
  5. DbContext Generator,下載地址
SQLite 不支持 Code First。變通的辦法是使用 MsSql 實現 Code First 的 POCO 類定義,然后將生成的 Edmx 文件保存到另外的工程中實現 Model First。生成的 Edmx 需要手動將其中的 中的 Provider 改為 System.Data.SQLite。
使用 Nuget 將 EntityFramework 安裝到當前工程時,會自動添加 App.Config 文件。需要添加以下內容:
  <connectionStrings>
    <add name="MyModels" 
connectionString
="metadata=res://*/MyModels.csdl|res://*/MyModels.ssdl|res://*/MyModels.msl;provider=System.Data.SQLite;provider connection string=&quot;Data Source=MyModels.db3;Version=3;&quot;" providerName="System.Data.EntityClient" /> </connectionStrings> <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, Version=1.0.84.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/> </DbProviderFactories> </system.data>

Code First 中使用 EntityTypeConfiguration 語法無法定義字段的默認值,需要修改數據庫的 DDL 定義,或者在 Edmx 文件生成的實體類中添加初始值設置。注意不能直接修改自動生成的類文件,當 edmx 文件改動后會重新生成實體類定義,導致改動丟失。應該在同一文件夾中添加 partial 類文件。


免責聲明!

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



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