“NavigationExpandingExpressionVisitor”失败。这可能表明 .NET Core 3.1 中的 EF Core 存在错误或限制

问题描述 投票:0回答:1

当我将项目从 .NET Core 2.2 升级到 .NET Core 3.1 时,LINQ 不起作用。

这些是我的实体模型:

public class Offer
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string Desc { get; set; }
}

public class VendorOfferMembershipScheme
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public Guid OfferId { get; set; }
}

当我尝试使用 Linq 和以下代码获取数据时:

var data = (from offer in _dbContext.Offers
            join membershipscheme in _dbContext.VendorOfferMembershipSchemas on offer.Id equals membershipscheme.OfferId into ms
            from membershipscheme in ms.DefaultIfEmpty()
            select (prepareOfferData((membershipscheme == null ? null : membershipscheme), offer))).ToList();

我收到错误:

LINQ 表达式 'DbSet 的处理 .GroupJoin( 外部:DbSet, 内部:offer => Offer.Id, 外键选择器:membershipscheme =>membershipscheme.OfferId, innerKeySelector: (offer, ms) => new { 报价=报价, 毫秒 = 毫秒 })' by 'NavigationExpandingExpressionVisitor' 失败。这可能表明 EF Core 中存在错误或限制。请参阅 https://go.microsoft.com/fwlink/?linkid=2101433 了解更多详细信息。

但它在 .NET Core 2.2 中运行良好。

.net linq asp.net-core .net-core-3.1 versionupgrade
1个回答
0
投票

当我将项目从 .NET Core 2.2 升级到 .NET Core 3.1 时,LINQ 不起作用。 你能试试这个吗?

var data = _dbContext.Offers .GroupJoin( _dbContext.VendorOfferMembershipSchemas, offer => offer.Id, membershipscheme => membershipscheme.OfferId, (offer, ms) => new { Offer = offer, MembershipSchemes = ms }) .SelectMany( x => x.MembershipSchemes.DefaultIfEmpty(), (offer, membershipscheme) => prepareOfferData(membershipscheme, offer.Offer)) .ToList();

© www.soinside.com 2019 - 2024. All rights reserved.