MVC的最佳ORM工具?

时间:2011-07-25 11:46:08

标签: nhibernate entity-framework asp.net-mvc-3 orm fluent-nhibernate

我们即将开始使用sql server 2008在MVC 3上开发应用程序。我们计划在项目中使用ORM工具。我们经历过LLBL,EF等多种工具。 我想帮助决定哪一个更好,更可靠。

  • 实体框架
  • nHiberante / Fluent nHibernate
  • LLBL
  • nHydrate

由于

4 个答案:

答案 0 :(得分:3)

根据我的经验,我将使用实体框架工作,原因有很多:
- 微软正在付出巨大的努力 - 在MVC(视频,文章和教程)中使用它有很多支持 - 与其他ORM相比,易于使用和配置,特别是在使用CodeFirst版本时。

我对新Entity框架用户的建议是运行SQL Profiler并继续观察它,看看代码的效果以及如何优化它会产生更少的SQL语句。

Other ORMs to use with .Net

答案 1 :(得分:3)

我们已经使用了Nhibernate和Entity框架,并根据这些经验我会说:

  • Nhibernate更加成熟和灵活,但需要很好地理解代码才能从中获得最佳效果。
  • 实体框架有一些重大遗漏和古怪的行为。
  • 在EF中缓存可能是一种真正的痛苦。
  • Nhibernate更难在网上找到合适的支持 复杂的问题。
  • 实体框架一直在变得越来越好。
  • 如果您是MS专卖店,请使用EF,但要注意当前的情况 限制和一些奇怪的行为。
  • 如果您需要复杂的模型支持和真正的灵活性 数据存储使用Nhibernate。
  • 避免使用Fluent Nhibernate的XML配置文件
  • 使用Automapper for Nhibernate快速行动。

我们选择了Nhibernate。您可以选择不同的方式

答案 2 :(得分:2)

TBH我认为MVC的部分内容并不相关,因为列出的所有工具在MVC中都能正常工作。因此,当您查看要使用的ORM时,您需要查看其他一些因素。你提到了可靠的,只要你没有使用第一版的Entity Framework,所有列出的都是非常可靠的(EF的新版本比第一版有很大改进)。

关于这个问题有很多讨论,但我会抛出一些你可能想要考虑的事情:

  1. 您是否关心解决方案是否是开源的?如果其中一个是Microsoft官方解决方案,您是否在乎?如果这些答案中的任何一个是肯定的,那么您的决定就很容易了。
  2. 您打算如何使用它?如果你想在Visual Studio中使用一个漂亮的GUI来处理模型,那么EF很可能就是这样。如果你想使用代码优先解决方案,NHibernate(有或没有Fluent)比EF更成熟。我对其他两个列出的选项并不熟悉。如果你按照我的方式做事并首先构建数据库然后希望ORM生成POCO类来使用它,我可以从经验中说EF 4.1非常擅长。
  3. 你需要其他人做的事情而另一件事没有吗?还有一些东西不在当前版本的EF中,如果你想使用Code First设置,那么还有更多东西不在EF中。他们在下一个版本中修复了其中的一部分,但EF中的CF非常重要。
  4. 我在当前项目中使用EF 4.1。正如我所提到的,我们总是首先设计我们的数据库然后告诉EF基于它生成模型和类,并且以这种方式使用它非常容易。它很有效,它很容易启动和运行,而且我不需要弄清楚如何告诉它我需要更改数据库设计(我的DBA会这样做而我告诉EF将更新添加到模型中,是一个双击操作)。到目前为止,它已被证明非常可靠。

    说了这么多,我没有问题,建议你试一试,看看它是否适合你。 Here's a bit of reading on how to get going with this type of setup using the new EF 4.1 generation.

答案 3 :(得分:1)

我的团队在NHibernate方面取得了成功。我喜欢它从POCO / Model First开始,并没有像EF一样加以解决。自动架构更新使我们不必编写大量代码。

此外,如果我们发现错误(因为我们可以在源代码中修复它),我们控制自己命运的事实是一个巨大的优势。