让Table1
引用Table2
,Table2
引用Table3
。
查询:
x.Table1.Include(x=> x.Table2)
.Where(x=> x.something == 1).Select(x=> new{
T2Model = x.Table2.Select(y=> new{
T3Val = y.Table3.val
})
}).ToList()
Include(x=> x.Table2)
会确保val
来自Table3
而不会出现问题吗?
答案 0 :(得分:2)
如果您删除了Include
来电,那么您的查询应该有效:
x.Table1
.Where(x=> x.something == 1).Select(x=> new{
T2Model = x.Table2.Select(y=> new{
T3Val = y.Table3.val
})
}).ToList();
您的预测确保将val
加载Table3
,因为您的Linq to Entities查询将在稍后转换为sql,并且由于您在{{{ 1}},Linq提供者将扣除它需要做两个内部联接来进行该投影。
如果您没有使用相关属性进行投影并且想要加载它们(禁用延迟加载),那么请使用Select
扩展方法:
Include