[英]EntityFramework Core 6 upgrade Could not load type IAsyncQueryProvider
我已將我的 .NET Core 3.1 應用程序更新為 .NET 6,一步是將 EntityFramwork Core 也更新為版本 6.0.2。
不幸的是,我的許多單元測試現在都失敗了,除了:
System.TypeLoadException:無法從程序集 'Microsoft.EntityFrameworkCore,版本 = 6.0.2.0,加載類型 'Microsoft.EntityFrameworkCore.Query.Internal.IAsyncQueryProvider'
我不太確定為什么會這樣。 我已經閱讀了遷移指南 ( https://learn.microsoft.com/en-us/as.net/core/migration/31-to-60?view=as.netcore-6.0&tabs=visual-studio )並沒有看到像這樣提到的東西。
以下是因出現此異常而失敗的單元測試示例:
[TestMethod]
public async Task IsPrivatKundeAsync_WithMatchingCriteria_ReturnsTrue()
{
var data = new[] {
new MyEntity { Partnernr = "1", Geburtstag = new DateTime(2000, 1, 1), Plz = "8000" },
new MyEntity { Partnernr = "2", Geburtstag = new DateTime(2001, 2, 2), Plz = "8001" },
new MyEntity { Partnernr = "3", Geburtstag = new DateTime(2002, 3, 3), Plz = "8002" },
};
var builder = new DbContextOptionsBuilder<MyDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString());
var db = new Mock<MyDbContext>(builder.Options);
db.Setup(x => x.MyEntity).Returns(data.AsQueryable().BuildMockDbSet().Object);
IPartner partner = new Partner(db.Object);
var result = await partner.IsPrivatKundeAsync(data[1].Partnernr, data[1].Geburtstag.Value, data[1].Plz);
Assert.IsTrue(result);
}
這些測試在更新之前一直有效。
感謝您的任何見解:-)
問題很可能出在您用於測試的包之一中。
EF Core 將此 class 的名稱空間從Microsoft.EntityFrameworkCore.Query.Internal.IAsyncQueryProvider
更改為Microsoft.EntityFrameworkCore.Query.IAsyncQueryProvider
在 ef core 版本 3 到 5 之間,這意味着其中一個測試包需要更新或更改。 在我的例子中,它是 MockQueryable.Moq package。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.