EF或ADO.Net(SqlCommand& SqlConnetion)和那些性能用法

时间:2012-02-01 07:24:41

标签: .net entity-framework ado.net

依靠我的研究和EF(和LinQ)工作7个月,似乎EF(或LinQ)是用传统解决方案取代它的好方法(我的意思是使用SqlCommand,SqlConnetion,DataReader和其他ADO。网络组件)

这里我有3个问题:

  1. 无论EF及其性能使用情况如何,我都应该担心用EF 完全取代传统解决方案吗?

  2. 请看这两个代码:


  3. //#1
    var UsersEnum = MyDataContext.Users;
    return UserEnum.Where(obj => obj.age > 20);
    
    //#2
    return MyDataContext.Users.Where(obj.age > 20);
    

    这些拖车代码有什么不同?!!

    首先,首先获取所有记录并将其存储在变量中,然后按年龄过滤它们,然后返回剩余记录

    但是第二个怎么办?它是否获取所有记录然后过滤它们?或者它只提取过滤后的记录(不是全部)?!


    3。 性能使用中的两个代码有什么不同?有什么区别吗?或者通常看起来EF在ADO.Net Components上获得更多性能。是吗?

    抱歉我的语法错误,我是英文新手并感谢您的关注。任何想法和建议都很有用。

1 个答案:

答案 0 :(得分:2)

  

无论EF及其性能使用情况如何,我都有什么   应该担心它取代EF的传统解决方案   完全?

EF是对ADO.NET的抽象。抽象是漏洞。你将失去ADO.NET API的一些功能,但如果你的所有要求都很好,那么EF的容量就可以了。您将错过EF的一些示例是批量插入和批量查询。 EF不是批量相关操作性能的良好解决方案。它善于处理一小组物体。

  

这两个代码之间有什么不同?!

在功能方面,两个代码示例之间没有区别。它们都不会发出数据库请求。这是LINQ的一个名为Differed Execution

的功能
  

这些两种代码在性能使用方面有何不同?是   有什么区别?或者通常看起来EF获得更多性能   针对ADO.Net组件。是不是?

如果20ms,30m延迟在您的应用程序中很重要,那么您最好使用ADO.NET。但EF与ADO.NET相比还有许多其他优势