使用实体框架时,ESQL的性能是否优于Linq to Entities?
我更喜欢使用Linq to Entities(主要是因为强类型检查),但我的其他一些团队成员都将性能作为使用ESQL的理由.我想充分了解使用这两种方法的专家/骗子.
最明显的区别是:
Linq to Entities是强类型代码,包括很好的查询理解语法.事实上,"from"出现在"select"之前,IntelliSense可以帮助您.
实体SQL使用传统的基于字符串的查询,使用更熟悉的SQL语法,其中SELECT语句位于FROM之前.因为eSQL是基于字符串的,所以动态查询可以在运行时使用字符串操作以传统方式组合.
不太明显的关键区别是:
Linq to Entities允许您更改形状或将查询结果"投影"为"select new {...}"语法所需的任何形状.匿名类型,C#3.0的新手,已经允许这样做.
使用Entity SQL无法进行投影,因为您必须始终返回ObjectQuery
ObjectQueryquery = DynamicQuery(context, "Products", "it.ProductName = 'Chai'", "it.ProductName, it.QuantityPerUnit"); public static ObjectQuery DynamicQuery(MyContext context, string root, string selection, string projection) { ObjectQuery
在这里和这里,其中一个团队成员详细描述了其他更微妙的差异.