我已将 .NET Core 3.1 应用程序更新到 .NET 6,其中一个步骤是将 EntityFramwork Core 更新到版本 6.0.2。
不幸的是,我的许多单元测试现在都失败了,但有以下异常(exception):
System.TypeLoadException: Could not load type 'Microsoft.EntityFrameworkCore.Query.Internal.IAsyncQueryProvider' from assembly 'Microsoft.EntityFrameworkCore, Version=6.0.2.0,
我不太确定为什么会发生这种情况。我已经阅读了迁移指南 ( https://learn.microsoft.com/en-us/aspnet/core/migration/31-to-60?view=aspnetcore-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 将该类的命名空间从 Microsoft.EntityFrameworkCore.Query.Internal.IAsyncQueryProvider
更改为
Microsoft.EntityFrameworkCore.Query.IAsyncQueryProvider
位于 ef core 版本 3 到 5 之间,这意味着其中一个测试包需要更新或更改。就我而言,它是 MockQueryable.Moq 包。
关于c# - EntityFramework Core 6 升级无法加载类型 IAsyncQueryProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71392604/