EF6 Code First 完美支持Sqlite

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

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。