【问题标题】:Entity framework optimize include, provide hints to Include实体框架优化包含,提供包含提示
【发布时间】:2013-02-06 04:07:01
【问题描述】:

是否可以为 Include linq 查询提供提示,以便优化子表的连接?

我有一个非常通用的数据模型,因此表之间存在多个引用约束。我正在使用遗留系统,因此改变它会非常困难。

我有一个类似下面的查询,它会生成非常复杂的 SQL 查询。

var links = A.B.CreateSourceQuery()
                            .Include("B1")
                            .Include("B1.C1")
                            .Include("B1.D1")
                            .ToArray();

有没有办法为上述查询提供提示,如何连接各个子实体,以便生成的 SQL 更加优化和高效,并且可以预先加载数据。

【问题讨论】:

    标签: entity-framework entity-framework-4 entity-framework-5


    【解决方案1】:

    请参阅我在http://www.thinqlinq.com/Post.aspx/Title/LINQ-to-Database-Performance-hints 的帖子,尤其是关于分解复杂查询的要点。如果您要获取两组孙子,您的表现可能会受到影响。您可能需要考虑自定义投影而不是多个包含。

    【讨论】:

    • 感谢您的回复,吉姆。我试图通过手动将 B1 与 B 和 C1 与 B1 和 D1 与 B1 连接来编写自定义投影,但由于它是模型优先设计并且关联是独立的(即不基于键),我无法访问连接列作为实体的属性。如果我不能基于实体属性加入(即当属性在实体上不可用时),我不确定如何编写自定义投影。我会尝试破解复杂的查询,看看是否有帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多