簡體   English   中英

EFCore 版本 7.0.0 的 Sqlite 不會為內存中連接加載數據庫。 因“SQLite 錯誤 1:”而失敗。 在 EnsureDeleted()

[英]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();

  1. 我嘗試將連接字符串從“Filename=:memory:”更改為不同的變體。
  2. 嘗試添加或刪除不同的包。

到目前為止沒有任何幫助。

這是由Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite v7.0.0引起的。 您可以嘗試將代碼更新為

.UseSqlite(dbConnection)

它應該可以正常運行。

之前的版本v6.0.13沒有這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM