依靠我的研究和EF(和LinQ)工作7个月,似乎EF(或LinQ)是用传统解决方案取代它的好方法(我的意思是使用SqlCommand,SqlConnetion,DataReader和其他ADO。网络组件)
这里我有3个问题:
无论EF及其性能使用情况如何,我都应该担心用EF 完全取代传统解决方案吗?
请看这两个代码:
//#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上获得更多性能。是吗?
抱歉我的语法错误,我是英文新手并感谢您的关注。任何想法和建议都很有用。
答案 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相比还有许多其他优势