Entity framework 实体框架与NHibernate-性能
我希望在我们的系统中实现ORM。我们目前有许多表,其中包含大量可怕的数据和存储过程。我听说使用ORM会降低系统速度。有人知道使用C代码中创建的查询和映射到存储过程哪个ORM在速度和性能上更好吗 谢谢 编辑:Entity framework 实体框架与NHibernate-性能,entity-framework,nhibernate,Entity Framework,Nhibernate,我希望在我们的系统中实现ORM。我们目前有许多表,其中包含大量可怕的数据和存储过程。我听说使用ORM会降低系统速度。有人知道使用C代码中创建的查询和映射到存储过程哪个ORM在速度和性能上更好吗 谢谢 编辑: 该项目将使用现有的大型表和包含大量数据的表,还将使用现有的存储过程在SQL Server数据库中执行复杂任务。ORM必须能够执行事务,并且在运行现有存储过程和查询当前表时具有高性能。该项目基于web,将使用WCF web服务和DDD。我可以看出EF更易于使用,并有更大的支持,但如果NH是最合
该项目将使用现有的大型表和包含大量数据的表,还将使用现有的存储过程在SQL Server数据库中执行复杂任务。ORM必须能够执行事务,并且在运行现有存储过程和查询当前表时具有高性能。该项目基于web,将使用WCF web服务和DDD。我可以看出EF更易于使用,并有更大的支持,但如果NH是最合适的选项,Entity Framework将不断实施新功能,并且您的项目中的所有内容都是自动化的。使用实体框架、扩展和重构代码非常容易。 VisualStudio将其集成(代码优先、数据库优先、实体优先……)就像一个魅力。 WindowsAzure使部署和更改变得更加容易。 此外,VisualStudio可以在3次单击中生成所有CRUD页面 我建议您使用EF,但这取决于您的项目。你能告诉我们更多的细节吗 你可以在谷歌上找到很多比较图表,比如解释性能和差异 编辑: 您能量化应用程序中的用户数量吗 当您首先在EntityFramework中使用数据库时,它非常容易,因为NHibernate也是如此。 请注意,如果您使用了大量存储过程而不是大量同时使用的用户,那么在这两者之间选择ORM可能就不是那么重要了 另外,别忘了工具的性能通常取决于使用它的方式。如果误用ORM(例如异步、延迟/急切加载、基类等),性能将急剧下降
也许你可以安装它们,看看它们是如何工作的,并查看它们的路线图(例如)来检查它们的发展和兴趣。两者都是很好的解决方案,尽管我个人认为NHibernate更适合继承数据库 在NHibernate中有一些明显更好的功能,比如二级缓存支持。文档可能比EF少一些,但是如果你愿意经历学习过程,NHibernate会给你更多的能力 FluentNHibernate非常适合将类类型化映射到底层表,但在某些地方,您只需恢复到XML映射即可。然而,NHibernate本身有一个新的竞争API,我还没有检查过(上面的博客文章提到了它) 如果您想依靠VS工具支持,EF更好。然而,有时会有一些魔力(例如,EF甚至可以使用反射来填充对象的私有属性,NHibernate不会这样做;这是一个优势还是劣势,取决于您如何看待它)。EF还可以与Microsoft提供的其他框架(例如RIA服务)配合使用。我还喜欢EF自动迁移(当您首先使用代码时) 如果您希望掌握更多的权力,并且希望能够通过清晰的关注点分离(ORM只做ORM应该做的事情)来微调事情的工作方式,那么NH似乎更好。然而,让NH能够访问所有的虚拟属性有点恼人 我已经使用了这两种方法,有时生成所需的sql时,这两种方法都会有点笨拙;在5-10%的情况下,再降低一级,使用像Dapper、Massive或Petapoco这样的微型orm 编辑:
NHibernate似乎也可以填充私有财产,所以这只是我的无知 在.NET 4.5上使用EF 5或EF 6是提高性能的一种可靠方法,不要期望在.NET 4.0上使用EF 5会有任何速度提升。Microsoft对此进行了记录。(我们还有另一个问题,LINQ语句写得很差) 一般来说,如果性能是高优先级的,那么在存储过程方面就无法打败ADO.NET。你根本不能。添加了ORM、添加和IOC容器。。。您希望进行多少性能测试
用JMETER启动几个虚拟机,用EF攻击一个服务器,用NHibernate攻击另一个服务器,您只需强制JMETER对URL进行足够的调用,并测试并发用户的数量,您就可以看到瓶颈所在。在此值得补充的是,实体框架在附加断开连接的图形时存在问题,并且缺少诸如Nhibernate中的合并等功能。你可以用其他插件来解决这个问题,但不能开箱即用。下面是对Codeplex上的功能的一个补充,该功能要求更好地支持处理断开连接的实体,并且还有一些进一步的讨论。 NH比EF的一些优点