📅  最后修改于: 2023-12-03 15:33:07.437000             🧑  作者: Mango
NHibernate 是一个开源的 ORM(Object-Relational Mapping,对象关系映射)框架,用于在 C#/.NET 平台下对关系型数据库进行操作。NHibernate 最初追随 Java 平台的 Hibernate ORM框架,并逐渐成长为一个功能强大,易于扩展和高度可配置的 .NET ORM 框架。
NHibernate 的架构分为四层:
其中,持久化层是 NHibernate 主要的功能提供者,它主要负责将实体对象映射到数据库中,实现了数据库与对象的交互。实体层是指开发人员在设计领域模型时使用的类和对象,承载了业务逻辑。应用层则负责对用户界面和领域模型进行协调。
NHibernate 的配置文件通过 XML 文件进行配置,主要有以下几个关键节点:
以下是一个简单的 NHibernate 配置示例:
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">server=.;database=test;uid=sa;pwd=123456</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<mapping assembly="NHibernateApp.Domain" />
</session-factory>
</hibernate-configuration>
ORM 映射文件用于将实体类映射到数据库中的表和字段上,其基本结构如下:
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="NHibernateApp.Domain"
namespace="NHibernateApp.Domain">
<class name="User" table="Users">
<id name="Id" type="Int32" column="Id">
<generator class="identity"/>
</id>
<property name="Name" column="Name"/>
<property name="Age" column="Age"/>
</class>
</hibernate-mapping>
NHibernate 提供了 ISession 接口来完成数据库与实体的映射和管理。完成数据的 CRUD 操作,都是在会话基础类 ISession 的基础上进行的。我们可以通过以下方式来获取 ISession 对象:
ISessionFactory sessionFactory = new Configuration().Configure().BuildSessionFactory();
ISession session = sessionFactory.OpenSession();
在 NHibernate 中,我们可以通过 ITransaction 接口来实现事务的管理。示例如下:
ITransaction transaction = null;
try
{
transaction = session.BeginTransaction();
// do something
transaction.Commit();
}
catch
{
transaction.Rollback();
}
finally
{
session.Close();
}
NHibernate 是极具价值的 ORM 框架,可以大大提高 .NET 开发者的开发效率和软件质量。如果您还有兴趣,请查看 NHibernate 的官方文档以及更多的例子和实践。