【发布时间】:2018-07-29 08:36:08
【问题描述】:
我正在尝试在内存中创建数据库并使用 .NET Core 2.1 框架运行查询。为此,我安装了一个名为 Microsoft.Data.Sqlite.Core 的软件包,然后尝试执行以下操作:
var connection = new SqliteConnection("Data Source=:memory:");
connection.Execute("Some Create Table Query");
我的代码将崩溃并出现以下错误:
您需要调用 SQLitePCL.raw.SetProvider()。如果您使用的是捆绑包,则通过调用 SQLitePCL.Batteries.Init() 来完成。
为了找到解决方案,我做了很多挖掘工作,其中一个建议这样称呼:
SQLitePCL.raw.SetProvider(new SQLite3Provider_e_sqlite3());
这给我带来了一个新错误:
'无法加载 DLL 'e_sqlite3' 或其依赖项之一:找不到指定的模块。 (来自 HRESULT 的异常:0x8007007E)'
在这一点上我真的很迷茫如何做到这一点。我要做的就是创建一个内存数据库,这样我就可以运行一些查询以进行单元测试。
我不确定这是否相关,但我没有使用 EF6,我使用的是 Dapper,而且我在我的实际项目中使用的是 SQL Server。我想在单元测试中插入 Sqlite,这样我也可以测试我的查询。
我感觉我使用了错误的包,但是环顾四周,我找不到任何关于如何在 MVC Core 项目中使用 Sqlite 的明确文档。
【问题讨论】:
-
我本来打算推荐 DbContextOptionsBuilder.UseInMemoryDatabase(string),但是你不能在内存数据库中使用 DatabaseFacade.ExecuteSqlCommand(),因为它不是关系数据库!
标签: c# sqlite asp.net-core