【问题标题】:EF Core lambda expr inside include not validEF Core lambda expr 内包含无效
【发布时间】:2020-12-13 18:15:48
【问题描述】:

我正在尝试将我的一个 SQL 查询“翻译”为 EF Core。我已经为基本查询获得了它,但我现在正在为标记线苦苦挣扎:

我试过这种方式,但得到了这个错误:

System.InvalidOperationException:在 Include 中使用的 Lambda 表达式无效。

我应该如何纠正它?

谢谢。

return DataContext.Provks
            .Include(p => p.Company)
            .Include(p => p.Plant)
            .Include(p => p.ProvkDetails.GroupBy(d => d.ProvkId).Select(d => d.Max(d => d.Version)))
            .Where(p => p.PlantId == plantId && p.Year == year)
            .OrderBy(p => p.Created)
            .ToList();

【问题讨论】:

  • 基本上通过使用Include查询你需要的没有

标签: c# entity-framework-core


【解决方案1】:

Include 引入不是为了连接而是为了加载相关实体。如果你想模仿 SQL - 以同样的方式编写。

var details = 
   from d in DataContext.Provks
   group d by d.ProvkId into g
   select new 
   {
       ProvkId = g.Key,
       maxVer = g.Max(x => x.Version)
   };

var query = 
   from p in DataContext.Provks
   join d in details on p.ProvkId equals d.ProvkId into dj
   from d in dj.DefaultIfEmpty()
   where p => p.PlantId == plantId && p.Year == year
   order by p.Created
   select new 
   {
      // choose needed fields
   }

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 2021-12-21
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 2017-09-22
    相关资源
    最近更新 更多