【问题标题】:LINQ to Entities query on related entitiesLINQ to Entities 查询相关实体
【发布时间】:2013-03-14 16:43:29
【问题描述】:

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

我担心这个查询是否正确或者是否可以提高效率:

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

【问题讨论】:

    标签: linq entity-framework


    【解决方案1】:

    这个查询是正确的,虽然它是一个cross-join - 只是两个集合的Cartesian product -。

    您可以根据equality 条件显式指定join

    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 };
    

    【讨论】:

    • 好的,那么这是查询此类事情的更有效方法吗?我认为在 LINQ 中不需要明确定义连接。
    • 您的查询将生成一组记录,显示两个表之间所有可能的组合。这是大型集的性能问题。你需要的结果不需要那个。阅读更多geekswithblogs.net/berthin/archive/2012/05/25/… - c-sharpcorner.com/UploadFile/3d39b4/…
    • 谢谢。性能是我关心的问题,至少你把我引向了正确的方向。
    猜你喜欢
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多