要想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 数据库了。