EF6可以使用System.Data.SQLite库连接SQLite数据库,但是并不能支持Code First功能
使用nuget安装Install-Package System.Data.SQLite会自动安装,然后会自动在配置文件中添加一些配置,
手动在配置中加入链接字符串,注意使用providerName="System.Data.SQLite.EF6",
链接字符串中的|DataDirectory|表示App_Data文件夹:
<connectionString>
<add name="SqliteTest" connectionString="data source=|DataDirectory|\SqliteTest.db" providerName="System.Data.SQLite.EF6" />
</connectionString>
这里需要注意,直接使用默认的配置文件会报错:
Unable to determine the provider name for provider factory of type 'System.Data.SQLite.SQLiteFactory'.
Make sure that the ADO.NET provider is installed or registered in the application config.
需要做如下修改:
DbProviderFactories节点下的两个invariantName="System.Data.SQLite"改为invariantName="System.Data.SQLite.EF6"provider节点下添加如下节点:
```
<provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
```
当然即使做了这些更改还是会报错无法加载SQLite.Interop.dll,
其实在安装的NuGet包中就含有SQLite.Interop.dll文件,在packages\System.Data.SQLite.Core.1.0.94.0\build文件夹下,
我们可以在bin文件夹的x64或者x86文件夹下找到对应版本,所以可以将程序的目标平台改为x86即可运行,
或者按照Any CPU的配置发布,配置在IIS中也是可以运行的。
不过EntityFramework和SQLite用起来真的是心累啊。。。
参考链接:
https://damienbod.com/2013/11/18/using-sqlite-with-entity-framework-6-and-the-repository-pattern/ http://www.csdn123.com/html/topnews201408/51/4651.htm