標籤:
要想EF6 Code First 模式支援Sqlite 得有一下幾步:
一、需要安裝 sqlite-netFx451-setup-bundle-x86-2013-1.0.92.0.exe 來讓VS添加Ado.net 時有sqlite可選
1) 自己去 http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki 下載對應.net 版本的安裝檔案(*注意下載檔案名稱帶bundle,這個才會對vs進行外掛程式支援)
2)安裝
要選擇全部安裝
勾上下面兩個複選框,這樣才會對VS 進行支援
然後一直下一步... ...
這個介面會停留比較久,不過不用管它,更不要手動關閉它,這是註冊vs 外掛程式
當你看到這個的時候,你可以開啟VS 進行Sqlite 的添加了
3)Vs 添加實體模型
你會看到這個,然後就可以愉快的和Sqlite 玩耍了
二、EF6支援
第一步完成後就可以程式就可以用EF的Code Frist了,但是同時還存在一個問題,就是程式在其他電腦上運行時無法找到System.Data.Sqlite 的程式支援,除非把第一步的重複一遍。
Nuget 中的 System.Data.Sqlite 包就能解決上述問題。
1) 安裝Nuget 包
在Nuget 管理介面 聯機搜尋 sqlite ,添加第一個,另外三個會自己添加。
也可以在Nuget 控制台輸入命令:Install-Package System.Data.Sqlite
2)修改config
紅線中的是要自己手動添加的,代碼如下
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
</providers>
</entityFramework>
<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" />
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
</DbProviderFactories>
</system.data>
PS:實體模型添加Sqlite 時只有5.0架構可選,也就意味著會先添加EF5,所以在添加System.Data.Sqlite 包前要先卸載EF5
至此,你就可以在VS 是用EF6來操作Sqlite 資料庫了。
EF6 Code First 完美支援Sqlite