什么是NHibernate以及为什么我应该使用它?

10

可能是重复问题:
什么是NHibernate?

我经常听到NHibernate这个名字,但我不太明白它是什么。我已经阅读了维基百科文章,但我不知道在我的C#应用程序中(桌面版带有WPF,Web版带有ASP.NET MVC),使用NHibernate会如何:

  • 改变代码
  • 更容易/更快

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


更新:感谢您确认这是一个重复问题!我没有意识到这个问题已经被问过了。

我想知道NHibernate和Linq to SQL之间的区别(我一直在使用Linq to SQL来开发我的应用程序),但这个问题已经在这里这里被问过了。

谢谢大家! :)


你可以先了解LINQ2SQL,了解ORM可以如何简化操作,然后再去研究nHibernate,它提供的是比linq2sql更高级的企业级ORM。 - Claus Jørgensen
请返回翻译后的文本:或http://en.wikipedia.org/wiki/ADO.NET_Entity_Framework - pm100
抱歉,我没有意识到这是一个重复的问题。对不起! - Maxim Zaslavsky
@Claus 我目前只在我的应用程序中使用了 Linq to SQL,我在想是否应该转换到其他东西。 - Maxim Zaslavsky
3个回答

20

NHibernate是一个ORM (对象关系映射器)。其目的是将你的面向对象应用中的对象映射到数据库中的表以进行持久化。

为什么需要它呢?因为它可以帮你省去大量的冗长的ADO.NET代码。基本上,它增强了开发人员在开发CRUD应用程序时的产品ivt,即创建、读取、更新和删除数据库中的数据。

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

如果你想要ORM的生产力,而又不想引入这种依赖关系,请考虑Entity Framework或Linq2SQL(请注意,Linq2SQL会将你锁定在SQL Server上)。

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


了解 OP 目前如何与数据库一起工作会很有趣。他可能甚至没有使用过 ADO.NET,这就解释了为什么他不会因此而痛苦。 =P - rebelliard

3
NHibernate的主要目的在维基百科文章中也有描述:
NHibernate的主要功能是将.NET类映射到数据库表(以及从CLR数据类型到SQL数据类型)。 NHibernate还提供了数据查询和检索功能。
NHibernate生成SQL命令并使开发人员免于手动数据集处理和对象转换,使应用程序可移植到大多数SQL数据库,并且数据库可移植性带来的性能损失非常小。

1
NHibernate 可以帮助你避免重复造轮子。90%的时间,当你选择新建项目时,它将是一个带有数据库后端的CRUD(创建、读取、更新和删除)项目。NHibernate可以为你完成很多这方面的工作,希望能够减少为每个项目编写新数据访问层所需的繁琐工作。如果你要写入数据库,我会建议使用NHibernate,但是也有很多其他ORM可供选择。我建议尝试所有的ORM。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接