【发布时间】:2022-01-11 18:30:09
【问题描述】:
我有一个要查询的实体框架数据库,所以我使用的是 linq-to-entities。
这是我的查询:
// 'Find' 只是一个返回 IQueryable 的包装方法
var q = r.Find(topic =>
topic.PageId != null &&
!topic.Page.IsDeleted &&
topic.Page.IsActive)
// 这些是标准的 EF 扩展方法,用于包含 链接表。 注意:Page_Topic 与主题是一对多的关系。
.Include(topic => topic.Page.Route)
.Include(topic => topic.Page_Topic.Select(pt => pt.Page.Route))
// 这里的问题:这个选择语句需要展平Page_Topic(它确实如此)。但它似乎在错误的地方做。解释一下,如果我要包含另一个依赖于 Page_Topic 的列(例如:'PillarRoutName2',我也必须对该列应用相同的展平逻辑。当然,Page_Topic 的过滤应该在更高的位置完成以 DRY 方式查询。
.Select(x => new
{
TopicName = x.Name,
HubRouteName = x.Page.Route.Name,
PillarRouteName = x.Page_Topic.FirstOrDefault(y => y.IsPrimary).Page.Route.Name
}).ToList();
【问题讨论】:
标签: c# asp.net linq entity-framework-6