当我将项目从 .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 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();