EF Core 中 一 对多的查询问题

Triumph 2021-09-27 13:50:23

数据库表为:

一个 File 包含 0 个或多个 Attrib,保存在 DataAttrib 表中。

需要查询出来的结果是:

List<File,List<Attrib>>

Linq 语句如下:

from f in db.Files
join attr in (
    from da in db.DataAttribs
    join a in db.Attribs on da.AttribID equals a.ID
    select new { da.DataID, a.Name }
) on f.ID equals attr.DataID into attrs
select new {f, attrs}

在 Linq for SQLServer 中查询正常,在 EF Core 5 中报错:could not be translated

 

请教各位是哪里的问题?该如何解决?

...全文
1162 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hello World, 2021-10-11
  • 打赏
  • 举报
回复 1

把关系建好了,用Include和ThenInclude查询就好了


var files = _context.Files.Include(f => f.DataAttrib).ThenInclude(da => da.Attrib);
Triumph 2021-09-28
  • 打赏
  • 举报
回复

查了资料,原来是 EF Core 中对此类 into 的语法(对应 GroupJoin)不再转换了。改为:

from f in db.Files
select new {
    f, 
    attrs = db.DataAttribs.Join(db.Attribs, da => da.AttribID, a => a.ID, (da, a) => new { da.DataID, a }).Where(x => x.DataID == f.ID).Select(x => x.a).toList()
}

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧