[英]Sqlite with EFCore version 7.0.0 does not load database for in-memory connections. Fails with 'SQLite Error 1: ''.' at EnsureDeleted()
對於單元測試,我使用 EFCore SQLite 內存數據庫並根據 MS 文檔創建模式,但是當代碼嘗試執行 EnsureDeleted() 時。 它失敗並出現異常“SQLite 錯誤 1:”。
異常中沒有提供太多詳細信息,並且在堆棧跟蹤下方提供失敗。
該代碼使用版本為 .net6.0 的 Do.net,下面的 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();
到目前為止沒有任何幫助。
這是由Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite v7.0.0
引起的。 您可以嘗試將代碼更新為
.UseSqlite(dbConnection)
它應該可以正常運行。
之前的版本v6.0.13
沒有這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.