📜  NHibernate教程(1)

📅  最后修改于: 2023-12-03 15:03:11.228000             🧑  作者: Mango

NHibernate 教程

NHibernate 是一个流行的开源 ORM(对象-关系映射)工具,它是Hibernate的.NET 版本,目的是为了简化.NET 应用程序的开发。 这个教程将帮助您了解NHibernate的基本概念和使用方法。

什么是 ORM?

ORM 是对象关系映射(Object-Relational Mapping)的缩写, 是一种程序技术,对数据库的操作通过面向对象的方式转化为面向对象语言(如C#)的操作,从而消除了应用程序代码和关系数据库管理系统之间的语法不匹配问题。

为什么使用 NHibernate?

NHibernate 提供可靠的持久化方案,可以轻松地将对象映射到数据库表中。它还提供了事务管理、缓存和复杂查询的支持,使得开发人员可以专注于业务逻辑的开发,而不必过多地关注数据库相关的实现细节。

NHibernate 基础概念
  • 会话(Session): 一个会话代表一个应用程序到数据库的连接。在一个会话中,我们可以执行一系列操作,包括添加、更新和删除对象。

  • 配置(Configuration): 包括数据库连接信息、映射文件的位置等信息。

  • 映射文件(Mapping File): 提供对象和关系之间映射的信息。

  • 对象(Object): 需要持久化的对象。NHibernate 支持POCO(Plain Old CLR Object)对象。

NHibernate 安装

可以通过Nuget包管理器安装 NHibernate。在Visual Studio中,打开Nuget包管理器并搜索 "NHibernate"即可找到并安装。

NHibernate 配置

NHibernate 的配置涉及两个文件: 'hibernate.cfg.xml'和映射文件。

'hibernate.cfg.xml'

下面是一个简单的 'hibernate.cfg.xml' 文件中的例子:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="connection.connection_string">your_connection_string</property>
    <property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
    <mapping assembly="YourAssembly" />
  </session-factory>
</hibernate-configuration>
  • connection.provider: 指定连接提供程序的类型。
  • connection.driver_class: 指定使用的数据库驱动程序。
  • connection.connection_string: 指定数据库连接字符串。
  • dialect: 指定使用的方言,根据数据库类型选择不同的方言。
  • mapping: 指定你要映射的程序集。
映射文件

映射文件包含您要与之交互的数据表的信息。映射文件是映射对象到数据表之间的链接。下面是一些简单映射文件的示例:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="YourAssembly"
                   namespace="YourNamespace">
  <class name="Product" table="Products">
    <id name="Id" column="ProductId">
      <generator class="identity" />
    </id>
    <property name="Name" column="ProductName" />
    <property name="UnitPrice" column="ProductPrice" />
  </class>
</hibernate-mapping>

在这个例子中,Product 是要映射的对象。映射文件为名为 Products 的表提供了映射信息。

NHibernate 会话

NHibernate 的会话对象扮演着非常重要以及核心的角色。会话是应用程序与数据库之间的中介器。 它提供了一组API,允许我们手动地加载、保存、更新和删除数据。

以下是使用 NHibernate 会话的一些基本操作:

创建会话
ISessionFactory sessionFactory = new Configuration().Configure().BuildSessionFactory();
ISession session = sessionFactory.OpenSession();
添加对象
session.Save(product);
更新对象
session.Update(product);
删除对象
session.Delete(product);
查询对象
IQuery q = session.CreateQuery("from Product p where p.Name like '%wine%'");
IList<Product> results = q.List<Product>();
foreach (Product p in results)
{
  Console.WriteLine("{0}, {1}", p.Name, p.UnitPrice);
}
NHibernate 查询

NHibernate 查询使用HQL(Hibernate Query Language)。 它是基于SQL语法的面向对象的查询语言,旨在完全绕过SQL,并专注于操作对象。

以下是几个常用的 HQL 语句:

基本查询
from Product p
条件查询
from Product p where p.UnitPrice > 10
聚集函数
select count(*) from Product p
总结

这个NHibernate教程介绍了NHibernate的基本概念、使用方法和必要的安装和配置。NHibernate是一个功能强大的ORM工具,可以轻松地将.NET应用程序与数据库集成。希望本教程对您有所帮助!