簡體   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