当前位置:  开发笔记 > 编程语言 > 正文

Linq to Entities与ESQL的性能

如何解决《LinqtoEntities与ESQL的性能》经验,为你挑选了1个好方法。

使用实体框架时,ESQL的性能是否优于Linq to Entities?

我更喜欢使用Linq to Entities(主要是因为强类型检查),但我的其他一些团队成员都将性能作为使用ESQL的理由.我想充分了解使用这两种方法的专家/骗子.



1> Royd Braysha..:

最明显的区别是:

Linq to Entities是强类型代码,包括很好的查询理解语法.事实上,"from"出现在"select"之前,IntelliSense可以帮助您.

实体SQL使用传统的基于字符串的查询,使用更熟悉的SQL语法,其中SELECT语句位于FROM之前.因为eSQL是基于字符串的,所以动态查询可以在运行时使用字符串操作以传统方式组合.

不太明显的关键区别是:

Linq to Entities允许您更改形状或将查询结果"投影"为"select new {...}"语法所需的任何形状.匿名类型,C#3.0的新手,已经允许这样做.

使用Entity SQL无法进行投影,因为您必须始终返回ObjectQuery .在某些情况下,可以使用ObjectQuery ,但是您必须解决.Select始终返回ObjectQuery 这一事实.见下面的代码......

ObjectQuery query = DynamicQuery(context,
        "Products",
        "it.ProductName = 'Chai'",
        "it.ProductName, it.QuantityPerUnit");

public static ObjectQuery DynamicQuery(MyContext context, string root, string selection, string projection)
{
    ObjectQuery rootQuery = context.CreateQuery(root);
    ObjectQuery filteredQuery = rootQuery.Where(selection);
    ObjectQuery result = filteredQuery.Select(projection);
    return result;
}


在这里和这里,其中一个团队成员详细描述了其他更微妙的差异.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有