Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
实体框架与nHibernate的性能、学习曲线总体特征_Nhibernate_Entity Framework_Orm_Fluent Nhibernate - Fatal编程技术网

实体框架与nHibernate的性能、学习曲线总体特征

实体框架与nHibernate的性能、学习曲线总体特征,nhibernate,entity-framework,orm,fluent-nhibernate,Nhibernate,Entity Framework,Orm,Fluent Nhibernate,我知道这已经被问过好几次了,我也读过所有的帖子,但是它们都很老了。考虑到版本和发行版的发展,我希望会有新的观点 我们正在ASP.NETMVC上构建一个新的应用程序,需要在ORM工具上完成。我们以前从未使用过ORM,基本上可以归结为两个nHibernate&实体框架 我真的需要从使用过这两种工具的人那里得到一些建议,并且可以根据经验推荐。我将重点关注三点,以最终确定: 演出 学习曲线 综合能力 非常感谢你的建议 致以最诚挚的问候,我会使用Nhibernate。我会把它作为一个伟大的框架,它将NHi

我知道这已经被问过好几次了,我也读过所有的帖子,但是它们都很老了。考虑到版本和发行版的发展,我希望会有新的观点

我们正在ASP.NETMVC上构建一个新的应用程序,需要在ORM工具上完成。我们以前从未使用过ORM,基本上可以归结为两个nHibernate&实体框架

我真的需要从使用过这两种工具的人那里得到一些建议,并且可以根据经验推荐。我将重点关注三点,以最终确定:

  • 演出
  • 学习曲线
  • 综合能力
  • 非常感谢你的建议


    致以最诚挚的问候,

    我会使用Nhibernate。我会把它作为一个伟大的框架,它将NHiBiRead、ASP.NET MVC和一系列其他开源工具封装成一个连贯的整体,这将为您提供一个坚实的架构基础。 Nhibernate比EF4更成熟。它得到了社会的广泛支持。只要你愿意不时弄脏你的手,你就会喜欢的。它对LINQ的支持目前有点弱,但正在迅速改善。学习曲线不错,但像会话管理这样的事情一开始可能会有点混乱。我喜欢Sharp Architecture的原因之一是,他们提供了您需要的所有NHibernate内容,并提供了大量关于如何在ASP.NET MVC项目中正确使用它的指导


    EF4具有MS批准印章。现在很好,但仍然落后于NHibernate。这是一个非常好的选择,您将从MS、MS支持部门找到大量文档,并最终找到更多熟悉细节的开发人员。我还应该提到的是,Sharp架构人员正在将对EF4的支持添加到他们的总体框架中。他们仍然支持NHibernate,但如果您愿意,您可以使用EF4。

    我认为学习NHibernate需要更多的时间

    EF提供了图形设计器,不幸的是,NHibernate没有通用设计器。顺便说一句,这不是问题。如果您以域驱动(DDD)的方式进行设计,您将首先设计您的实体,而不关心数据库结构(正如您过去所做的那样),NHibernate将为您处理这一问题

    EF 4更接近NHibernate。我不会开始使用EF3.5,它缺少很多功能

    如果您第一眼就认为NHibernate过于复杂,您可以从构建在NHibernate之上的框架开始。ActiveRecords和Sharp Architect就是很好的例子

    AFAIREF 3.5仅支持SQL Server 2000。它无法处理SQL Server 2005中的新数据类型。我没有关于EF4的信息,但我认为它支持这些改进

    如果您在真实的word应用程序中使用NHibernate,则必须构建一个基础架构。例如,我实现了工作单元和存储库模式,以便能够在我的应用程序中编写测试和创建层。使用EF时,您必须期望相同的结果在EF 3.5中分离和附加实体不是一件容易的事情,我必须编写复杂的扩展方法来标记字段脏等等。我希望他们能在EF4中解决这个问题。NHibernate没有这样的问题

    您不必在NHibernate中编写HQL查询,您可以使用LINQ提供程序。我认为这很重要

    总之NHibernate是一款成熟的产品,拥有良好的社区和商业支持。EF很年轻,但受到微软的大力支持。哦,EF是微软唯一的产品,而您也可以将您的NHibernate知识移植到Java。这对你很重要。

    看看这个

    我正在调查这件事。。。 在将应用程序整合到两者之后,NHibernate无疑更强大,但在EF非常干净的地方,它也相当笨重。在使用Rails/ActiveRecord之后,两者的功能都非常丰富,所以两者都可以工作

    我注意到NHibernate跟踪它刚刚运行的内容,如果它只是运行了一条语句,它不会再次执行它,因此一个正确设计的应用程序将运行最少的数据库语句。我知道EF也不是很慢,但我不确定它是否以同样的方式缓存语句和结果。对于大型应用程序,这可以节省一些数据库资源


    简言之,NHibernate具有功能性和可配置性,EF 4.0具有清洁性和快速简单的学习曲线。此外,人们应该预计下一个或两个版本中的EF在功能上也会赶上或超过NHibernate,因此对这两个版本都有一定的了解是有意义的。

    嘿,谢谢Tom的回复。我非常倾向于尖锐的弧形结构。但我关注的是互联网上的几篇文章提到了nHibernate的性能问题。现在我想,如果你做得好,你可能会取得更好的成绩,但我和我的团队还是第一次下手。@hadi:NHibernate不是性能问题。性能问题在于如何使用它。例如,如果您使用延迟加载并在一个巨大的结果集上循环访问某些属性,这会导致每次迭代都有一个数据库I/O,那么性能会很差。我强烈建议从获取一份Nhibernate Profiler副本,以检查您的访问模式并保持良好的性能。谢谢,伙计,我想我会继续使用Nhibernate。再次感谢您的帮助:).NET3.5或.NET4.0?我建议你远离EF 1.0/3.5。NHibernate有一个图形设计师。我正在与SQLite合作,我不知道图形设计师是否支持它。请发布一个链接,我很乐意使用它。我想找到一个能够对大多数受支持的数据库(包括SQLite)的数据库模式到实体映射进行反向工程的设计器。