Bra*_*ach 18 linq-to-entities entity-framework entity-sql
使用实体框架时,ESQL的性能是否优于Linq to Entities?
我更喜欢使用Linq to Entities(主要是因为强类型检查),但我的其他一些团队成员都将性能作为使用ESQL的理由.我想充分了解使用这两种方法的专家/骗子.
Roy*_*hay 17
最明显的区别是:
Linq to Entities是强类型代码,包括很好的查询理解语法.事实上,"from"出现在"select"之前,IntelliSense可以帮助您.
实体SQL使用传统的基于字符串的查询,使用更熟悉的SQL语法,其中SELECT语句位于FROM之前.因为eSQL是基于字符串的,所以动态查询可以在运行时使用字符串操作以传统方式组合.
不太明显的关键区别是:
Linq to Entities允许您更改形状或将查询结果"投影"为"select new {...}"语法所需的任何形状.匿名类型,C#3.0的新手,已经允许这样做.
使用Entity SQL无法进行投影,因为您必须始终返回ObjectQuery <T>.在某些情况下,可以使用ObjectQuery <object>,但是您必须解决.Select始终返回ObjectQuery <DbDataRecord>这一事实.见下面的代码......
ObjectQuery<DbDataRecord> query = DynamicQuery(context,
"Products",
"it.ProductName = 'Chai'",
"it.ProductName, it.QuantityPerUnit");
public static ObjectQuery<DbDataRecord> DynamicQuery(MyContext context, string root, string selection, string projection)
{
ObjectQuery<object> rootQuery = context.CreateQuery<object>(root);
ObjectQuery<object> filteredQuery = rootQuery.Where(selection);
ObjectQuery<DbDataRecord> result = filteredQuery.Select(projection);
return result;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11996 次 |
最近记录: |