2013-07-24 25 views
4

我正在从一个ORM转换到另一个(LLBGen Pro到实体框架)。为了正确重构,我需要了解一些东西。在LLBGen Pro中,有一个概念叫做prefetch paths。存在预取路径以减少延迟加载对性能产生负面影响时所需的查询数量。在Gen Pro中,可以说我有50个订单,我想收集与每个订单相关的客户。通过延迟加载,我最终可能会有51个数据库查询。由于客户的延迟加载而不是仅有2个预取路径启用的查询,所以订单为1,而每个客户为50。实体框架是否需要预取路径?

我的理解是实体框架(或者LINQ to SQL)可以为这种情况生成最优化的SQL。实体框架是否足够聪明,可以在LLB Gen Pro不能的情况下优化查询?换句话说,实体框架是否能够在运行时智能地生成SQL,以便“向前看”并查看所有客户的需求并生成单个查询而不是50个单独的查询?或者,EF是否支持某种类型的“预取路径”,或者这是否需要某些高级自定义表达式树......等等?

回答