C# 具有MVC核的SQLite

C# 具有MVC核的SQLite,c#,sqlite,asp.net-core,C#,Sqlite,Asp.net Core,我正在尝试在内存中创建一个数据库,并使用.NETCore2.1Framework运行一个查询。为此,我安装了一个名为Microsoft.Data.Sqlite.Core的软件包,然后尝试执行以下操作: var connection = new SqliteConnection("Data Source=:memory:"); connection.Execute("Some Create Table Query"); 我的代码将崩溃,出现以下错误: 您需要调用SQLitePCL.raw.Set

我正在尝试在内存中创建一个数据库,并使用.NETCore2.1Framework运行一个查询。为此,我安装了一个名为Microsoft.Data.Sqlite.Core的软件包,然后尝试执行以下操作:

var connection = new SqliteConnection("Data Source=:memory:");
connection.Execute("Some Create Table Query");
我的代码将崩溃,出现以下错误:

您需要调用SQLitePCL.raw.SetProvider()。如果您使用的是捆绑包,那么可以通过调用SQLitePCL.batters.Init()来完成

为了找到解决方案,我做了大量的挖掘工作,其中一人建议将其称为:

SQLitePCL.raw.SetProvider(new SQLite3Provider_e_sqlite3());
这会产生一个新错误:

'无法加载DLL'e_sqlite3'或其依赖项之一:找不到指定的模块。(HRESULT的例外:0x8007007E)'

在这一点上,我真的迷失了如何完成这一点。我想做的就是创建一个内存中的数据库,这样我就可以运行一些查询来进行单元测试

我不确定这是否相关,但我没有使用EF6,我使用的是Dapper,而且我在实际项目中使用的是SQL Server。我想在单元测试中插入Sqlite,这样我也可以测试我的查询

我有一种感觉,我使用了错误的包,但是环顾四周,有太多的包,我找不到任何关于如何将Sqlite与MVC核心项目一起使用的清晰文档。

尝试将包添加到您的项目中

dotnet add package SQLitePCLRaw.bundle_green
此时,以下程序()起作用:

这是我在本地运行的测试

cd C:/temp
dotnet new console
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.bundle_green
//
// paste the above program into Program.cs, then...
//
dotnet run 
什么是bundle\u green?
bundle\u green
是Sqlite“bundle包”之一,专门设计用于简化跨平台开发。以下是来自以下方面的描述:

这些包自动为每个平台引入正确的依赖项。它们还提供一个对所有平台都相同的Init()调用。。。SQLitePCLRaw.bundle_green是一个bundle,除了使用系统提供的SQLite的iOS之外,它在任何地方都使用e_sqlite3


SQLitePCLRaw.bundle\u是否绿色
mvc核心友好?与中一样,它不依赖于windows。尝试将我的框架保持在core上,而不是与.net混淆。添加Microsoft.Data.Sqlite和Microsoft.Data.Sqlite.core,而不手动添加其他框架,至少是.net core 2.2 SDK就足够了。我打算建议使用DBContextOptions Builder.UseInMemoryDatabase(string),但不能使用DatabaseFacade.ExecuteSqlCommand()使用内存数据库,因为它不是关系数据库!
cd C:/temp
dotnet new console
dotnet add package Microsoft.Data.Sqlite.Core
dotnet add package SQLitePCLRaw.bundle_green
//
// paste the above program into Program.cs, then...
//
dotnet run