EntityFramework Core 6 升级无法加载类型 IAsyncQueryProvider
EntityFramework Core 6 upgrade Could not load type IAsyncQueryProvider
我已将我的 .NET Core 3.1 应用程序更新到 .NET 6,一步是将 EntityFramwork Core 更新到版本 6.0.2。
不幸的是,我的许多单元测试现在都失败了,例外情况是:
System.TypeLoadException: Could not load type 'Microsoft.EntityFrameworkCore.Query.Internal.IAsyncQueryProvider' from assembly 'Microsoft.EntityFrameworkCore, Version=6.0.2.0,
我不太确定为什么会这样。我已经阅读了迁移指南 (https://docs.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 将此 class 的命名空间从 Microsoft.EntityFrameworkCore.Query.Internal.IAsyncQueryProvider
更改为
Microsoft.EntityFrameworkCore.Query.IAsyncQueryProvider
在 ef 核心版本 3 到 5 之间,这意味着其中一个测试包需要更新或更改。在我的例子中是 MockQueryable.Moq 包。
我已将我的 .NET Core 3.1 应用程序更新到 .NET 6,一步是将 EntityFramwork Core 更新到版本 6.0.2。
不幸的是,我的许多单元测试现在都失败了,例外情况是:
System.TypeLoadException: Could not load type 'Microsoft.EntityFrameworkCore.Query.Internal.IAsyncQueryProvider' from assembly 'Microsoft.EntityFrameworkCore, Version=6.0.2.0,
我不太确定为什么会这样。我已经阅读了迁移指南 (https://docs.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 将此 class 的命名空间从 Microsoft.EntityFrameworkCore.Query.Internal.IAsyncQueryProvider
更改为
Microsoft.EntityFrameworkCore.Query.IAsyncQueryProvider
在 ef 核心版本 3 到 5 之间,这意味着其中一个测试包需要更新或更改。在我的例子中是 MockQueryable.Moq 包。