繁体   English   中英

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:无法从程序集 '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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM