实体sql的目的是什么,我的意思是如果你有实体的linq为什么你需要用字符串写查询,是否有任何性能原因或什么?
答案 0 :(得分:9)
LINQ to Entities不允许您访问数据库的每个功能。能够“进入”数据库有时需要进行高级查询,要么首先将它们拉出来,要么改善LINQ to Entities系统对查询的有时可怕的选择。
那就是说,我相信LINQ to Entities应该是第一个达到的工具。如果性能成为问题,或者您有更复杂的东西,我会将该问题片段封装在存储过程中并调用它。现在没有理由将字符串用作查询的基础。
答案 1 :(得分:2)
ESQL允许您在where子句中选择排序规则,这在LINQ-to-Anything中是不受支持的。这可能真的很有用。 ESQL还允许您指定在类型相互继承时返回的精确类型(与LINQ的OfType
相反,后者返回特定类型和任何子类型的实例)。除此之外,我想不出使用它的一个很好的理由。能够在字符串中构建查询偶尔会很好,但在非常罕见的情况下,DynamicQuery / Dynamic LINQ通常足够好。
我认为(也许是玩世不恭)ESQL的“真正”目的是“它早于LINQ”。
关于Godeke修复非最佳查询的问题,我还没有看到通过更改LINQ表达式无法解决的问题。 ESQL和L2E最终都是CCT,因此SQL生成管道是相同的。