带有EFCore版本7.0.0的Sqlite无法为内存中连接加载数据库,失败并显示“SQLite错误1:“.”位于确保已删除()

2ekbmq32  于 2023-01-31  发布在  SQLite
关注(0)|答案(1)|浏览(164)

对于单元测试,我正在使用EFCore SQLite内存中数据库并根据MS文档创建架构,但当代码尝试执行EnsureDeleted()时失败,出现异常“SQLite Error 1:''.'
异常中没有提供太多详细信息,它在stacktrace下面提供失败。
堆栈跟踪的第一部分:

堆栈跟踪的第二部分:

该代码使用版本为.net6.0的Dotnet,对于EFcore和Sqlite,下面是版本为
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.Core" Version="7.0.0" /> <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="7.0.0" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite" Version="7.0.0" />
我用来建立连接的代码如下所示

var dbConnection = new SqliteConnection("Filename=:memory:");
dbConnection.Open();
var dbOptions = new DbContextOptionsBuilder<TestDBContext>()
    .UseSqlite(dbConnection, opt => opt.UseNetTopologySuite())
    .Options;

TestDBContext db = new TestDBContext(dbOptions);
db.Database.EnsureDeleted(); // This is where it fails.
db.Database.EnsureCreated();

1.我尝试过将连接字符串从“Filename=:memory:“更改为其他变体。
1.已尝试添加或删除不同的程序包。
到目前为止没有任何帮助。

x4shl7ld

x4shl7ld1#

这是由Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite v7.0.0引起的。您可以尝试将代码更新为

.UseSqlite(dbConnection)

它应该可以正常运行。
以前的版本v6.0.13没有这个问题。

相关问题