我为什么要打扰实体框架?

时间:2011-03-03 12:56:14

标签: nhibernate entity-framework

  

可能重复:
  Entity Framework 4 vs NHibernate

我一直在努力开发软件超过10年 我主要使用MS技术,从VB3,COM +开始,然后是ASP.NET和ASP.NET MVC 在这些年里,我使用了所有新的闪亮MS技术来访问数据库 我记得记录集,数据集,rds,ado,ado.net等。 每当我觉得它是最后一个,但每隔几年,再一次,试图学习一个本来会持续几个月的新事物。 现在我跳上了Nhibernate旅行车,我非常喜欢那个家伙。 我想开始用Entity Framework做一些事情,但我想我可以等下一个;-) 你对此有何看法?

3 个答案:

答案 0 :(得分:5)

我经常玩EF。我在爱好项目以及工作中的实际项目中使用它。我也在玩EF Code First,目前正在使用CTP(但很快就会发布)。

我的意见:

当我比较直接在.NET中使用的数据访问技术时EFv4是最好的。没有关于此的讨论 - 这是真的。它是MS的第一个工具,至少可以称为ORM。它允许您在实际和对象世界之间进行一些基本的映射,并简化了通过Linq到实体的数据访问。如果您遇到EF问题,您仍然可以退回并通过EF类调用直接SQL,这些类再次为您处理映射。如果您想了解更多信息,我们可以只讨论您感兴趣的功能 - 我不想在这里写一本书(已经存在THE BOOK以上)。

是EF不是市场上最好的工具。它还很年轻,很多功能都缺失或没有按预期工作。可扩展性也是可怕的 - 当前版本的EF主要是单片黑盒子,没有可扩展点。拆卸EF组件表明它充满了内部密封的静态类。另一个问题是EF的学习曲线要​​长得多,特别是如果你之前从未使用过ORM。

我开始学习NHibernate,我不得不说这个功能集真的很棒,但我还没有在任何项目中使用它。另一个问题是,例如,在我目前的工作中,我们不允许使用它(我即将离开)。

选择取决于您,但至少要了解可用工具的基础知识总是好的。

答案 1 :(得分:2)

好吧,我当然是little biased,但是如果你已经在使用NHibernate,那么切换到EF就没什么可收获的,也有很多损失。

与其他框架相比,EF还不成熟。您认为理所当然的所有功能(可扩展性,缓存,批处理,日志记录,基于约定的映射,对用户定义的值类型的支持等)都不存在于EF中。

答案 2 :(得分:0)

我没有尝试EF,所以会有更好的答案,但我的观点是:

EF的优势在于它由Microsoft提供,并且可能更好地与其组件集成(例如,在gridview中启用分页的工作量更少)

NHibernate是许多人已经知道,使用并且已经找到了如何为他们工作的东西(例如,你已经编写了每个请求的会话和每个工作单元的会话模块。也许是一个审计框架,或与其他免费框架/库集成。等等。)

EF在我看过的演示中看起来相当不错,但是他们也做了一些非常愚蠢的事情会让我发疯(像命名惯例这样的小事情等等)我也不相信微软会从中产生适当的代码。一个巫师,但这是对旧产品的偏见,在这种情况下可能没有道理。

如果你真的很好奇,可以用EF做一个较小的项目进行比较(让我们知道它是怎么回事)。对我来说,我坚持使用NH,直到EF看起来如此引人注目,以至于我再也无法忽视它了。