【问题标题】:What is NHibernate and why should I use it? [duplicate]什么是 NHibernate,我为什么要使用它? [复制]
【发布时间】:2011-04-24 00:55:35
【问题描述】:

可能重复:
What is NHibernate?

我听说NHibernate 这个名字用了很多,但我不太明白它是什么。我有read the Wikipedia article,但我不明白如何在我的 C# 应用程序(带 WPF 的桌面、带 ASP.NET MVC 的 Web)中使用 NHibernate:

  • 更改代码
  • 更轻松/更快

我应该考虑在我的项目中使用 NHibernate 吗?


更新:感谢您将此识别为骗子!我没有意识到这已经被问到了。

我想我真正的问题是关于 NHibernate 与 Linq to SQL(我一直在我的所有应用程序中使用),但这已经被问到 herehere

谢谢大家! :)

【问题讨论】:

  • 您可以先查看 LINQ2SQL,了解 ORM 可以使事情变得多么简单,然后再查看 nHibernate,它提供了比 linq2sql 更企业级的 ORM。
  • 糟糕,没有意识到这是一个骗局。对不起!
  • @Claus 到目前为止,我只在我的应用程序中使用了 Linq to SQL,我想知道是否应该切换到其他东西。

标签: c# .net nhibernate orm


【解决方案1】:

NHibernate 是一个 ORM(对象关系映射器)。其目的是将您的 OO 应用程序中的对象映射到数据库中的表以实现持久性。

你为什么需要它?因为它可以使您免于编写大量繁琐的 ADO.NET 代码。本质上,它提高了开发人员在开发 CRUD 应用程序时的工作效率,即主要目的是在数据库中创建、读取、更新和删除数据的应用程序。

NHibernate 是开源的,您需要意识到您正在使您的应用程序依赖于第三方库,其长期目标可能与您的不同。

如果您希望在不引入这种依赖关系的情况下提高 ORM 的生产力,请考虑使用实体框架或 Linq2SQL(注意 Linq2SQL 将您锁定在 SQL Server 中)。

最后,如果您不需要 ORM 的生产力增强,并且想要绝对控制,请坚持使用普通的旧 ADO.NET。

【讨论】:

  • 了解 OP 当前如何与数据库一起工作会很有趣。即使使用 ADO.NET,他也可能没有做太多的改变,这可以解释为什么他没有哭着摆脱它。 =P
【解决方案2】:

NHibernate 让您免于重新发明轮子。 90% 的时间你选择文件新项目,它将是一个带有数据库后端的 CRUD(创建、读取、更新和删除)项目。 NHibernate 为您做了很多这样的工作,希望可以消除一些必须为每个项目编写新的数据访问层的乏味。如果您写入数据库,我会说是的,您应该研究 NHibernate,但是那里有很多 ORMS。我说都试试。

【讨论】:

    【解决方案3】:

    Wikipedia article 中也描述了 NHibernate 的主要用途:

    NHibernate 的主要功能是从 .NET 类映射到数据库表(以及从 CLR 数据类型到 SQL 数据类型)。 NHibernate 还提供数据查询和检索功能。

    NHibernate 生成 SQL 命令并使开发人员从手动数据集处理和对象转换中解脱出来,保持应用程序可移植到大多数 SQL 数据库,并以非常低的性能开销提供数据库可移植性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-17
      • 2010-11-01
      • 2019-08-22
      • 1970-01-01
      • 2017-01-10
      • 2011-02-21
      相关资源
      最近更新 更多