c# - EntityFramework Core 6 升级无法加载类型 IAsyncQueryProvider

标签 c# .net entity-framework-core .net-6.0

我已将 .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/

相关文章:

c# - 我在 Entitlement plist 中为我的移动应用程序添加了钥匙串(keychain)支持但无法在 xamarin 中准备发布版本

c# - 当事件触发时执行类上的 void 方法的单元测试

.net-core - 从 EntityFrameworkCore 2.1 升级并破坏代码时添加的 SQL 'AS' 关键字

c# - 使用连接字符串 Entity Framework 在运行时生成 DbContext 和模型

javascript - TypeScript foreach 返回

c# - SharePoint Web 服务的 LINQ to XML 问题

c# - 如何在类中包含 "Empty"常量

.net - MS Visual Studio .NET 的替代品

c# T 的实例

c# - 是否可以在 Entity Framework Core 中创建映射类?