已关闭,此问题需要更focused。它目前不接受回答。
**想改善这个问题吗?**更新问题,使其只关注editing this post的一个问题。
关闭27天前。
社区在27天前审查了是否重新打开这个问题,并将其关闭:
原始关闭原因未解决
Improve this question
作为我的previous question的后续。我是一名ASP.NET程序员,我想知道NHibernate如何帮助我更容易更快地完成工作。假装我对NHibernate一无所知。它是什么,它能为我做什么?
已关闭,此问题需要更focused。它目前不接受回答。
**想改善这个问题吗?**更新问题,使其只关注editing this post的一个问题。
关闭27天前。
社区在27天前审查了是否重新打开这个问题,并将其关闭:
原始关闭原因未解决
Improve this question
作为我的previous question的后续。我是一名ASP.NET程序员,我想知道NHibernate如何帮助我更容易更快地完成工作。假装我对NHibernate一无所知。它是什么,它能为我做什么?
2条答案
按热度按时间u5rb5r591#
NHibernate是一个ORM,或对象关系Map器。与LINQ to SQL、Entity Framework、LLBLGen和其他工具一样,ORM工具消除了编写存储过程来处理业务对象的公共数据访问(CRUD)的大部分需求。ORM工具要求您创建(手动或使用可视化设计器......取决于您选择的)Map规范,该规范跟踪对象的哪些属性Map到数据库中表和/或视图的哪些列。当您需要检索对象时,ORM工具会为您生成适当的SQL,并将其发送到数据库。当需要更新对象时,ORM不仅会为你创建插入、更新和删除的SQL语句,它还将批处理这些命令,以便将单个连接和一批命令发送到数据库,并在一个事务中执行整个操作。ORM工具还可以通过允许您一次性选择整个对象图来提高查询的效率,从而为任务生成最有效的SQL。
使用ORM工具,您仍然需要查询,但是您可以使用ORM上下文或会话对象的基本方法,或者使用ORM的自定义查询语言。现在,大多数ORM,包括NHibernate,也提供了LINQ支持,允许你使用标准的LINQ语法来查询你的对象模型,这反过来又被转换为针对你的数据库的SQL查询。
ORMap器的好处是将几乎所有的代码集中到域中,而不是在域和存储过程之间分割。您减轻了数据库上的存储过程负载,在需要时为重构数据库提供了更少的障碍,不仅在您的领域中,而且在您的数据库模式中提供了更大的业务敏捷性。由于您不必编写SQL,特别是如果您使用LINQ,您通常可以以更少的工作量和更低的长期维护成本创建更高效的应用程序。
除了不可避免的与DBA的战争(如果您有DBA的话)之外,ORMap器还可以为表带来相当大的好处,可以减少实现工作量,提高可维护性,并提供更大的业务敏捷性。
希望这能回答问题。;)
jq6vz3qz2#
NHibernate是一个ORM(Object-Relational Mapper)工具。它基于数据库模式创建一个面向对象的模型。
从https://www.hibernate.org/343.html
NHibernate关键特性:
*自然编程模型- NHibernate支持自然的OO习惯用法;继承、多态、组合和.NET集合框架,包括泛型集合。
*Native .NET- NHibernate API使用.NET约定和习惯用法
*支持细粒度对象模型-集合和依赖对象的丰富Map
*无构建时字节码增强-在构建过程中没有额外的代码生成或字节码处理步骤
*查询选项- NHibernate解决了问题的两个方面;不仅要知道如何将对象放入数据库,还要知道如何将它们再次取出
*自定义SQL-指定NHibernate用于持久化对象的确切SQL。Microsoft SQL Server支持存储过程。
*支持“对话”- NHibernate支持长寿命持久化上下文、对象的分离/重新附加,并自动处理乐观锁定
*自由/开源- NHibernate在LGPL(Lesser GNU Public License)下授权