C# Select语句中嵌套的导航属性的FirstOrDefault

C# Select语句中嵌套的导航属性的FirstOrDefault,c#,sql-server,asp.net-core,ef-core-3.0,C#,Sql Server,Asp.net Core,Ef Core 3.0,我拥有具有子导航属性的实体。每个孩子也有孩子的财产。我需要访问二级子属性,根据条件获取FirstOrDefault条目并获取属性值。代码如下: 查询: _repository.Where(product => product.Date >= startDate).Include(product => product.Shift).ThenInclude(shift => shift.Translations) .GroupBy(prod

我拥有具有子导航属性的实体。每个孩子也有孩子的财产。我需要访问二级子属性,根据条件获取FirstOrDefault条目并获取属性值。代码如下:

查询:

_repository.Where(product => product.Date >= startDate).Include(product => product.Shift).ThenInclude(shift => shift.Translations)
                  .GroupBy(product => product.Shift)
                  .OrderBy(pg => pg.Key.Id)
                  .Select(pg =>
                      new TupleDto<string, double>()
                      {
                          Item1 = pg.Key.Translations.FirstOrDefault(t => t.Language == "en").Title
                      }).ToListAsync();
\u repository.Where(product=>product.Date>=startDate)。包括(product=>product.Shift)。然后包括(Shift=>Shift.Translations)
.GroupBy(product=>product.Shift)
.OrderBy(pg=>pg.Key.Id)
.选择(pg=>
新的TupleDto()
{
Item1=pg.Key.Translations.FirstOrDefault(t=>t.Language==“en”).Title
}).ToListAsync();
实体:

public class Product
{        
    [Column(TypeName = "date")]
    public DateTime Date { get; set; }

    public int ShiftId { get; set; }

    [ForeignKey("ShiftId")]
    public Shift Shift { get; set; }
}

[Table("Shifts")]
public class Shift: FullAuditedEntity<int>, IMultiLingualEntity<ShiftTranslation>
{
    public ICollection<ShiftTranslation> Translations { get; set; }
}

[Table("ShiftTranslations")]
public class ShiftTranslation : Entity, IEntityTranslation<Shift>
{
    [Required]
    [Column(TypeName = "nvarchar(16)")]
    public string Title { get; set; }

    [Column(TypeName = "varchar(16)")]
    public string Language { get; set; }
    public Shift Core { get; set; }
    public int CoreId { get; set; }
}
公共类产品
{        
[列(TypeName=“日期”)]
公共日期时间日期{get;set;}
public int ShiftId{get;set;}
[外键(“ShiftId”)]
公共移位移位{get;set;}
}
[表(“班次”)]
公共类转换:全审核性、非多语言性
{
公共ICollection转换{get;set;}
}
[表(“移位翻译”)]
公共类移位翻译:实体,IEntityTranslation
{
[必需]
[列(TypeName=“nvarchar(16)”)]
公共字符串标题{get;set;}
[列(TypeName=“varchar(16)”)]
公共字符串语言{get;set;}
公共移位核心{get;set;}
public int CoreId{get;set;}
}
我得到一个例外:

Processing of the LINQ expression 'AsQueryable<ShiftTranslation>(NavigationTreeExpression
    Value: default(IGrouping<Shift, ShoePair>)
    Expression: (Unhandled parameter: e).Key.Translations)' by 'NavigationExpandingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core. See https://go.microsoft.com/fwlink/?linkid=2101433 for more detailed information.
System.InvalidOperationException: Processing of the LINQ expression 'AsQueryable<ShiftTranslation>(NavigationTreeExpression
    Value: default(IGrouping<Shift, ShoePair>)
    Expression: (Unhandled parameter: e).Key.Translations)' by 'NavigationExpandingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core. See https://go.microsoft.com/fwlink/?linkid=2101433 for more detailed information.
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.ExpressionVisitor.VisitMemberAssignment(MemberAssignment node)
   at System.Linq.Expressions.ExpressionVisitor.VisitMemberBinding(MemberBinding node)
   at System.Linq.Expressions.ExpressionVisitor.Visit[T](ReadOnlyCollection`1 nodes, Func`2 elementVisitor)
   at System.Linq.Expressions.ExpressionVisitor.VisitMemberInit(MemberInitExpression node)
   at System.Linq.Expressions.MemberInitExpression.Accept(ExpressionVisitor visitor)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.ExpandNavigationsInExpression(NavigationExpansionExpression source, Expression expression)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.ExpandNavigationsInLambdaExpression(NavigationExpansionExpression source, LambdaExpression lambdaExpression)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.ProcessSelect(NavigationExpansionExpression source, LambdaExpression selector)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.ExpandAndReduce(Expression query, Boolean applyInclude)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.Expand(Expression query)
   at Microsoft.EntityFrameworkCore.Query.QueryTranslationPreprocessor.Process(Expression query)
   at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](Expression query)
   at Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](Expression query, Boolean async)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass12_0`1.<ExecuteAsync>b__0()
   at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQueryCore[TFunc](Object cacheKey, Func`1 compiler)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1.GetAsyncEnumerator(CancellationToken cancellationToken)
   at System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.GetAsyncEnumerator()
   at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
   at DigitalFactory.Ftt.Report.ReportAppService.GetFttByShift(DateTime startDate, DateTime endDate, String factoryId, String productionLineId) in D:\work\DigitalFactory\DigitalFactory\aspnet-core\DigitalFactory\FTT\DigitalFactory.Ftt.Application\Report\ReportAppService.cs:line 104
   at lambda_method(Closure , Object )
   at Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
处理LINQ表达式“AsQueryable(NavigationTreeExpression)”的

值:默认值(iGroup)
由“NavigationExpandingExpressionVisitor”生成的表达式:(未处理的参数:e).Key.Translations)失败。这可能表明EF核心中存在缺陷或限制。看见https://go.microsoft.com/fwlink/?linkid=2101433 更多详细信息。
System.InvalidOperationException:处理LINQ表达式“AsQueryable(NavigationTreeExpression
值:默认值(iGroup)
由“NavigationExpandingExpressionVisitor”生成的表达式:(未处理的参数:e).Key.Translations)失败。这可能表明EF核心中存在缺陷或限制。看见https://go.microsoft.com/fwlink/?linkid=2101433 更多详细信息。
位于Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression MethodCallExpression)
位于Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression MethodCallExpression)
位于Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression MethodCallExpression)
位于Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression MethodCallExpression)
位于System.Linq.Expressions.ExpressionVisitor.VisitMemberAssignment(MemberAssignment节点)
位于System.Linq.Expressions.ExpressionVisitor.VisitMemberBinding(MemberBinding节点)
在System.Linq.Expressions.ExpressionVisitor.Visite[T](只读集合'1节点,函数'2 elementVisitor)
位于System.Linq.Expressions.ExpressionVisitor.VisitMemberInit(MemberInitExpression节点)
位于System.Linq.Expressions.MemberInitExpression.Accept(ExpressionVisitor)
位于Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpansionExpressionVisitor.ExpandNavigationExpression(NavigationExpansionExpression源,表达式)
位于Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpansionExpressionVisitor.ExpandNavigationInLambDaeExpression(NavigationExpansionExpression源,LambDaeExpression LambDaeExpression)
位于Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpansionExpressionVisitor.ProcessSelect(NavigationExpansionExpression源,LambdaExpression选择器)
位于Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression MethodCallExpression)
在Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.ExpandAndReduce(表达式查询,布尔applyInclude)
位于Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.Expand(表达式查询)
位于Microsoft.EntityFrameworkCore.Query.QueryTranslationPreprocessor.Process(表达式查询)
位于Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](表达式查询)
位于Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](表达式查询,布尔异步)
位于Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase数据库、表达式查询、IModel模型、布尔异步)
在Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.c__显示Class12_0`1.b__0()
位于Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQueryCore[TFunc](对象缓存键,Func`1编译器)
在Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](表达式查询,取消令牌取消令牌)
在Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](表达式表达式,CancellationToken CancellationToken)
位于Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1.GetAsyncEnumerator(CancellationToken CancellationToken)
在System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.GetAsyncEnumerator()中
位于Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListSync[TSource](IQueryable`1源,CancellationToken CancellationToken)
位于D:\work\DigitalFactory\DigitalFactory\aspnet core\DigitalFactory\Ftt\DigitalFactory.Ftt.Application\Report\ReportAppService.cs中的DigitalFactory.Ftt.GetFtbyShift(DateTime startDate,DateTime endDate,String factoryId,String productionLineId):第104行
在lambda_方法(闭包,对象)
在Microsoft.Extensions.Internal.ObjectMetho