我最近将我的项目从.NET Core 2.0升级到了2.1。我使用Entity Framework Core并且有几个包含左连接的LINQ表达式。以下代码是一个例子:
var tickets = (from ticket in dbContext.Tickets
join member in dbContext.Members on ticket.MemberID equals member.ID into memberLEFT
from member in memberLEFT.DefaultIfEmpty()
join memberType in dbContext.MemberTypes on member.MemberTypeID equals memberType.ID into memberTypeLEFT
from memberType in memberTypeLEFT.DefaultIfEmpty()
select memberType)
.ToList();
如果在.NET Core 2.0中,此行将不会出现异常。但在.NET Core 2.1中,它会抛出以下ArgumentException:
System.ArgumentException:“字段'Microsoft.EntityFrameworkCore.Query.EntityQueryModelVisitor+TransparentIdentifier`2[Microsoft.EntityFrameworkCore.Storage.ValueBuffer,System.Collections.Generic.IEnumerable`1[Microsoft.EntityFrameworkCore.Storage.ValueBuffer]].Inner'未定义于类型'Microsoft.EntityFrameworkCore.Query.EntityQueryModelVisitor+TransparentIdentifier`2[Microsoft.EntityFrameworkCore.Storage.ValueBuffer,Microsoft.EntityFrameworkCore.Storage.ValueBuffer]'。”
如果我更改LINQ以执行内部连接而不是左连接,则执行没有任何问题。但是,连接必须是左连接,所以我不能只更新所有代码以执行内部连接。
请问有人知道为什么EF Core 2.1在执行左连接时会抛出ArgumentExecptions,并如何解决这个问题?