MS Entity Framework VS NHibernate及其派生的贡献(FluentNHibernate,Linq for NHibernate)

我刚刚阅读了有关Entity Framework 4(实际上是版本2)的这篇文章

entity framework似乎比其首次发布提供了巨大的改进。 因此,我从来没有在任何项目中使用EF,因为我觉得EF与NHibernate相比还不够成熟。

NHibernate及其目前对FluentNHibernate和Linq for NHibernate的贡献由Ayende Rahien提供

我的感觉是,当第二版NHibernate问世时,微软只是试图获得有利于NHibernate的地形。 然而,我的担忧是以下(不是特别的顺序):

  • EF4往往不那么XML冗长吗?
  • EF4是否与除SQL Server之外的基础数据存储兼容?
  • 使用EF4代替FluentNHibernate或NHibernate本身有什么好处?

NHibernate是一个很棒的工具,我想每个人都同意。 由于其前身Hibernate,我们可以轻松找到文档和教程以及示例应用程序以熟悉它。 FluentNHibernate不是这种情况。 特别是根据我正在进行的项目,我要求我进一步调查NHibernate及其选项(例如FluentNHibernate),以便记录NHibernate和FluentNHibernate技术的使用规则和最佳实践。 因此,作为一名C风格的开发人员,在VB.NET中被戴上手铐,我无法在VB.NET中找到一些语法对应的例子,尽管我已经到目前为止。

我相信NHibernate是最佳选择,但作为一名软件顾问,我不能(不想)错过重要的技术变革,改进和发展。

尽管我读到了关于EF1的糟糕评论,但EF4看起来非常有前景。 您对NHibernate和Entity Framework途径的看法是什么? 至于我,我对所有的阅读都感到困惑。 我需要你把头伸出水面。

谢谢大家!

带上一粒盐。 我对ORM工具没有任何权威,但在这里……

我在EF中看到的最大好处之一是用于映射的GUI。 IMO,这节省了大量时间,但可能是EF XML映射如此冗长的原因。 不幸的是,它们不是手动处理的。 是否会改变我不知道。 我所知道的是,EF提供的GUI曾经在以前的版本中非常不稳定。 而且我仍然听说有人抱怨它不能很好地扩展,特别是在更大,更复杂的模式中,它只是错过了东西而你最终直接搞乱了映射。 我的观点是随着EF的成熟,XML地图将变得不那么冗长。 您还可以在EF中获得流畅的映射支持,这也很有帮助。 最后,另一个重要的事情是能够更改EF生成的代码模板,即如果您喜欢数据库驱动的设计而不是设计优先的方法。

另一个好处是,它来自微软,他们有足够的面团使这个真正的涂料框架。 它在过去几年里发展迅猛。 我认为在一年多一点的时间里它与NHibernate的基础相同。 截至目前,我认为NHibernate是一个更好的选择。 它更稳定,更成熟。 相对容易配置,最重要的是表现更好。 我认为,如果你明智地设计,从一个到另一个的移动将是一块蛋糕。

EF只是一种抽象。 我相信有Oracle的提供商,所以我不明白为什么随着它的增长不会有更多的添加。

我对EF几乎一无所知,但快速浏览所提供的链接让我相信EF与Fluent NHibernate的Automappingfunction无关

编辑:一些评论者向我指出指示EF中有一些自动化的链接,但它是否与FNH一样强大并不是很清楚(例如,能够自动化其他对象的集合)。

就个人而言,我喜欢能够以OO方式设计POCO,并让该工具处理映射到关系数据库的所有繁忙工作。

据我所知,FNH仍然拥有最强大的自动化function。

有关更多信息,请访问Fluent NHibernate Automapping 。

EF4往往不那么XML冗长吗?

总的来说,我没有看到任何迹象表明XML将完全不同。 微软在v4中为EF提供了类似Fluent的接口,但它是一个添加/单独下载。

EF4是否与其他基础数据存储兼容,而不仅仅是SQL Server?

它现在兼容,并且将继续兼容。 LinqToSql仅限SQL Server,但EF从未只是SQL Server。

使用EF4代替FluentNHibernate或NHibernate本身有什么好处?

老实说,并不多。 这里和那里有一些不同的东西是不同的,但总的来说,NHibernate仍然领先于EntityFramework,即使在EFv4中也是如此。

作为一名顾问,您可能值得花时间成为NHibernate和Entity Framework的专家。 您可能会继续在现实世界中看到它们。 在数据访问方面,微软的注意力往往很短,因此目前尚不清楚entity framework将在几年之后的位置。 因为它来自Microsoft,所以可以肯定很多开发人员都会使用EF。