我有3个EF对象集:父母,孩子和宠物,有1对多关联(父母可以有儿童和儿童可以有许多宠物)。 对于给定的父母,我需要获得该父母所有孩子所拥有的所有宠物。
我担心这个查询是否正确还是可以提高效率:
Dim query = From par In context.Parents
From child In par.Childrens
From pet In child.Pets
Where par.parent_id = 1
Select pet
答案 0 :(得分:0)
这个查询是正确的,虽然它是cross-join
- 只是两个集合中的Cartesian product
- 。
您可以根据join
条件明确指定equality
。
var query = from par in context.Parents
join child in context.Childrens on child.ParentID equals par.ID
join pet in context.Products on child.ID equals pet.ChildID
Where par.parent_id = 1
select new { par.Name, par.Id };