实体框架排序导航对象
本文关键字:对象 导航 排序 框架 实体 | 更新日期: 2023-09-27 18:25:28
我有一个类似的查询
return this.Context.Modules
.Select(p => new
{
Module = p,
Page = p.Pages.OrderBy(c => c.AuthOrder)
}).ToList()
.Select(a => a.Module)
.ToList();
但我使用的是EF 4.2,我试着这样做,并通过SQL事件探查器观察,EF生成了更多的嵌套SQL查询,我只想为这个任务生成一个查询,比如这个
select * from Modules m join Pages p on m.ID = p.Module_ID
order by p.AuthOrder
这怎么可能?
类似的查询
select * from Modules m join Pages p on m.ID = p.Module_ID
order by p.AuthOrder
可以通过下一种方式实现:
var q = (from c in Context.Modules
join o in Context.Pages on c.ID equals o.Module_ID
orderby o.AuthOrder
select new {c, o}).ToList();
您可能正在寻找指定要包含在结果中的相关对象的Include()
(即,SQL请求中必须加入哪些表):
return this.Context.Modules.Include("Pages")
.Select(p => new
{
Module = p,
Page = p.Pages.OrderBy(c => c.AuthOrder)
}).ToList()
.Select(a => a.Module)
.ToList();
编辑:你确定你的查询有意义吗?您实际上只选择了Module
,那么为什么要先订购Pages
呢?