1

我有 3 个 EF 对象集:父母、孩子和宠物,具有一对多的关联(父母可以有可能的孩子,孩子可以有很多宠物)。对于给定的父母,我需要获取该父母的所有孩子拥有的所有宠物。

我担心这个查询是正确的还是可以提高效率:

Dim query = From par In context.Parents
            From child In par.Childrens
            From pet In child.Pets
            Where par.parent_id = 1
            Select pet
4

1 回答 1

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 };
于 2013-03-14T08:43:29.157 回答