Performance 具有非常大和复杂数据集的实体框架

Performance 具有非常大和复杂数据集的实体框架,performance,entity-framework,ado.net,resources,Performance,Entity Framework,Ado.net,Resources,如果您能帮助我回答以下问题,我将不胜感激: EF5是否足够可靠和高效,能够处理现实世界中非常庞大和复杂的数据集 与ADO.NET相比,EF5是否需要更多的资源(如内存) 对于那些在实际项目中尝试过EF5且数据集非常庞大和复杂的人,您对目前的性能满意吗?因为EF创建了一个数据访问的抽象。EF的使用引入了许多额外的步骤来执行任何查询。但有一些变通办法可以降低成本。MS正在推广这种ORM,我相信他们在性能改进方面也做了很多工作。EF6测试版已经发布了。 MSDN上有一篇关于EF5性能的好文章 如果从

如果您能帮助我回答以下问题,我将不胜感激:

EF5是否足够可靠和高效,能够处理现实世界中非常庞大和复杂的数据集

与ADO.NET相比,EF5是否需要更多的资源(如内存)


对于那些在实际项目中尝试过EF5且数据集非常庞大和复杂的人,您对目前的性能满意吗?

因为EF创建了一个数据访问的抽象。EF的使用引入了许多额外的步骤来执行任何查询。但有一些变通办法可以降低成本。MS正在推广这种ORM,我相信他们在性能改进方面也做了很多工作。EF6测试版已经发布了。 MSDN上有一篇关于EF5性能的好文章

如果从EF查询填充DBSET后需要对DBSET进行大量复杂的操作和迭代,我将不使用EF


希望这有帮助。

EF能够处理大量数据。就像在普通的ADO.NET中一样,您需要了解如何正确使用它。在ADO.NET中编写性能差的代码同样容易。记住EF是建立在ADO.NET之上的,这一点也很重要

与代码优先EF方法相比,使用大量数据的DBSET速度要慢得多。如果操作正确,普通数据读取器可能会更快


正确的答案是“简介”。对一些大型对象进行编码并分析差异

我在EF 4.1上对此做了一些研究,一些细节可能仍然适用,尽管EF5的性能有所升级

我的结论: -您无法将ADO性能与必须从C#动态生成实际SQL语句并将该SQL语句转换为强类型对象的框架相匹配,即使使用预编译和“预热”语句(性能测试得出结论),也存在太多的问题。对于许多人来说,用C#编写和维护Linq要比存储过程和映射代码容易得多,这是一个很好的权衡

-您仍然可以使用与ADO性能相同的存储过程,这对我来说是一个完美的情况。您可以在linq正常工作的情况下将其写入sql,并且只要您希望获得更高的性能,就可以编写存储过程并将其导入EF以尽可能获得最佳性能

-没有任何技术原因可以避免EF接受您项目的要求,也可能是您团队的知识和舒适度。确保它符合您选择的设计模式


我希望这能有所帮助。

我认为没有“变通办法”,只有“正确的使用方法”。首先,我感谢你的所有回答,它们对我很有用。我的项目将涉及许多复杂的操作和迭代——每个客户机请求涉及X次迭代;每次迭代都需要搜索和多次插入/更新。许多这样做的客户机几乎同时请求。我是EF和ADO.NET的新手。。。我只是想好好想想。谢谢。。。对分析将帮助我确定答案。