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