可能重复:
What is NHibernate?
我听说名字NHibernate使用了很多,但我真的不明白它是什么。我read the Wikipedia article,但我不明白在我的C#应用程序(桌面w / WPF,web w / ASP.NET MVC)中使用NHibernate将如何:
我应该在项目中使用NHibernate吗?
更新:感谢您将此视为傻瓜!我没有意识到这已经被问过了。
我想我真正的问题是关于NHibernate与Linq to SQL(我在所有应用程序中都使用过),但已经问过here和here。
谢谢大家! :)
答案 0 :(得分:19)
NHibernate是一个ORM(对象关系映射器)。其目的是将OO应用程序中的对象映射到数据库中的表以保持持久性。
你为什么需要它?因为它可以帮助您免于编写大量繁琐的ADO.NET代码。本质上,它在开发CRUD应用程序时提高了开发人员的工作效率,即主要用于在数据库中创建,读取,更新和删除数据的应用程序。
NHibernate是开源的,您需要意识到您的应用程序依赖于第三方库,其长期目标可能与您的不同。
如果您希望在不引入此依赖关系的情况下提高ORM的效率,请考虑实体框架或Linq2SQL(注意Linq2SQL会将您锁定到SQL Server中)。
最后,如果你不需要ORM的生产力增强,并且你想要绝对控制,那就坚持使用普通的旧ADO.NET。
答案 1 :(得分:3)
NHibernate的主要目的也在Wikipedia article中描述:
NHibernate的主要功能是从.NET类映射到数据库表(以及从CLR数据类型到SQL数据类型)。 NHibernate还提供数据查询和检索功能。
NHibernate生成SQL命令,使开发人员免受手动数据集处理和对象转换的影响,使应用程序可以移植到大多数SQL数据库,并且数据库可移植性的性能开销很小。
答案 2 :(得分:1)
NHibernate使您无需重新发明轮子。您选择文件新项目的90%时间将成为具有数据库后端的CRUD(创建,读取,更新和删除)项目。 NHibernate为您做了很多工作,希望能够消除为每个项目编写新数据访问层的繁琐工作。如果你写一个数据库,我会说是的,你应该看看NHibernate,但那里有很多ORMS。我说试试吧。