【问题标题】:What does nhibernate have, that entity framework 4 is missing?nhibernate有什么,缺少实体框架4?
【发布时间】:2011-04-24 14:42:23
【问题描述】:

我们正在尝试确定是否值得在项目中使用实体框架 4。为此,我认为将它与 nhibernate 进行比较是一个很好的起点,nhibernate 已经成熟并经过多年的使用证明具有企业应用程序所需的所有功能,并找出 nHibernate 具有哪些 EF4 缺少的功能出去吧。

首先,我的知识有限:

  • 缓存:nhib 有 L2 缓存,而 EF4 缓存很差 (?)
  • nHibernate 为大多数数据库提供了提供程序,而 EF 需要为非 SQL 数据库提供插件
  • nHib 更快/更优化
  • nHib 具有扩展点(例如自定义字段类型)
  • ...还有什么?

找到一些文章:

http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx

http://dotnetslackers.com/articles/ado_net/A-Feature-driven-Comparison-of-Entity-Framework-and-NHibernate-Multiple-Databases.aspx

http://dotnetslackers.com/articles/ado_net/A-Feature-driven-Comparison-of-Entity-Framework-and-NHibernate-Multiple-Databases-Part2.aspx

【问题讨论】:

  • 我个人认为 NHibernate 的灵活性和可扩展性使其成为卓越的产品。看起来你可以让 NH 比 EF 为你做更多的事情。只是我的 2c...
  • 阿伦,不用害羞,添加到列表中是一件非常有效的事情!
  • 这应该是一个 CWiki,因为它是主观的(对于 EF 的粉丝和 NHibernate 的粉丝)。并且很可能会爆发出“哪个更好”的争论。
  • 问题重新措辞,所以它不是骗子

标签: c# linq nhibernate entity-framework


【解决方案1】:

我在桌面应用程序中使用实体框架,虽然我对它非常满意,但使用 DateTime 对象有一个缺点 - 您无法访问属性,最重要的是 DateTime.Date属性。

此外,您不能在 LINQ 查询中使用实体框架外来对象(即:不在实体框架上下文中的对象,例如将 Journal 映射到 JournalDto),即。映射时 - 您必须先使用 ToList() 执行查询,然后再进行映射。

关于 EF 工具有问题 - 我没有注意到任何相关内容,但我可能只是触及了框架的表面。

【讨论】:

  • 语句 2 不正确,您可以使用导航属性直接在查询中检索“外键”对象,或者您可以明确地进行联接。另外,您可以使用预先加载 (.Include) 来显式加载对象(如果您禁用了延迟加载)。
  • 日期时间太奇怪了!当您尝试访问属性时会发生什么?鉴于它是一种原始类型,我看不出日期时间如何只能“一半”工作。
  • RPM:您读到的句子语调错误。我希望我的编辑能澄清它。我不是指外键关系。
  • @Fermaref - 是的,您的澄清会有所帮助。我的错。
【解决方案2】:

NHibernate 支持除 SQL Server 之外的其他数据库,例如如果您使用的是 Oracle。实体框架本身旨在支持多个提供程序,但您获得的唯一内置提供程序是用于 SQL Server。 Oracle 尚未发布任何提供程序,并且有用于其他数据库的商业或不完整的免费提供程序。因此,如果在范围内支持多个 DB,那么 NHibernate 目前领先于 EF 4。

【讨论】:

  • 谢谢。我会把它添加到列表中。不过对我们来说不是问题,因为我们只使用 sql 服务器。
【解决方案3】:

虽然我对 EF 没有太多经验,但 NHibernate 最大的卖点之一就是它的可扩展性点。 User TypesEvent Listeners 是 NHibernate 体验各方面可定制性的绝佳示例。

【讨论】:

    【解决方案4】:

    我在实体框架刚推出时尝试过它,但我发现在做任何不标准的事情时配置过于复杂(对于任何现实生活中的应用程序,事情都没有示例那么完美)。使用 nhibernate,复杂性很容易在可读性很强的映射文件中解决。实体框架映射文件几乎没有可读性。

    【讨论】:

    • 你知道,这正是我的经验。如果你走出他们预期的做事方式的狭窄界限,你真的会遇到复杂的墙壁。
    猜你喜欢
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多