在1-M关系中,在关系的许多方面,我可以提取父项的Id而不使用以下内容执行其他查询:
this.ParentReference.EntityKey.EntityKeyValues[0].Value
但是我想知道是否有类似的方法从1中抽出多个ID而不进行另一次查询?
干杯 安东尼
答案 0 :(得分:1)
不,除非你急切地加载(或投射)这种关系。
当您加载this
时,EF会自动加载包含this
的表中的所有数据。它在任何其他表中都不JOIN
。
加载Parent
时,包含子ID的数据位于另一个DB表中。因此,除非您告诉EF加载它,否则在其他表中不会JOIN
。
因此,如果您知道在加载Parent
时需要“子”ID,则可以急切加载:
var p = Context.Parents.Include("Children").Where(p => p.Id == id).First();
......或项目:
var q = from p in Context.Parents
where p.Id == id
select new
{
Parent = p,
ChildIds = from c in p.Children
select c.Id
};