Entity Framework使用Sqlite时的一些配置
作者:网络转载 发布时间:[ 2015/7/3 13:47:15 ] 推荐标签:数据库 SQLite
3. 遇到的异常3
使用了上面的方法,上面的那个异常没了,又一个新的来了。
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.
Sqlite的那些包是通过NuGet安装的,但是NuGet貌似没有帮忙生成完整的配置,所以需要自己补上。
这里贴上的是完整的,注意红色的是添加的:
<system.data>
<DbProviderFactories>
<span style="color: #ff0000;"><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"/></span>
<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" />
<remove invariant="System.Data.SqlServerCe.4.0" />
<add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
</DbProviderFactories>
</system.data>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
<parameters>
<parameter value="System.Data.SqlServerCe.4.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<span style="color: #ff0000;"><provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /></span>
<provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" />
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
</providers>
</entityFramework><br>
4. 虽然使用的是Code First,但是System.Data.SQLite.EF6是不能帮助我们自动生成数据库的表结构的,需要手动创建。(当然,可以找找有没有其他支持Sqlite的Migration的EF Provider)
OK了,到此这几个坑算是填平了。
5. 设置DataDirectory
我的Sqlite的连接字符串是这样写的:
<add name="BloggingContext_SQLite" connectionString="Data Source=|DataDirectory|Blogging_SQLite.db" providerName="System.Data.SQLite.EF6"/>
为了开发方便,我将数据库文件放在了项目里面,这个样子:
怎样告诉连接字符串DataDirectory在这里呢?
private static void SetDataDir()
{
DirectoryInfo baseDir = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);
string data_dir = baseDir.FullName;
if ((baseDir.Name.ToLower() == "debug" || baseDir.Name.ToLower() == "release")
&& (baseDir.Parent.Name.ToLower() == "bin"))
{
data_dir = Path.Combine(baseDir.Parent.Parent.FullName, "App_Data");
}
AppDomain.CurrentDomain.SetData("DataDirectory", data_dir);
}
在程序初始化时调用。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11