📜  NHibernate-入门(1)

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

NHibernate-入门

NHibernate是一个专业的ORM(Object Relational Mapping)框架,可以将数据库中的数据映射到应用程序中的对象模型中。NHibernate可以提高开发效率,简化业务逻辑代码的编写,避免直接与数据库打交道的麻烦。

安装NHibernate

安装NHibernate需要引用NHibernate程序集,可以通过NuGet管理器添加NHibernate包:

Install-Package NHibernate
配置NHibernate

NHibernate的配置主要包括以下四个部分:

数据库连接

在hibernate.cfg.xml中配置数据库连接,指定数据库的驱动程序、连接字符串、数据库用户和密码等信息,如下所示:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="connection.connection_string">Data Source=my_server;Initial Catalog=my_database;User ID=my_user;Password=my_password;Pooling=true;</property>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
  </session-factory>
</hibernate-configuration>
映射文件

在映射文件中描述实体类和数据库表的映射关系,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="Demo.Entity.User, Demo" table="user">
    <id name="Id" column="id">
      <generator class="identity" />
    </id>
    <property name="Name" column="name" />
    <property name="Age" column="age" />
  </class>
</hibernate-mapping>
配置session工厂

在应用程序启动前,需要创建session工厂,可以通过Configuration对象的BuildSessionFactory方法来完成:

using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;

var configuration = new Configuration();
configuration.Configure();
var sessionFactory = configuration.BuildSessionFactory();
创建session

在进行数据库操作前,需要先创建session对象,可以通过sessionFactory的OpenSession方法来完成:

var session = sessionFactory.OpenSession();

至此,NHibernate的基本配置已经完成,可以开始进行数据访问操作了。

NHibernate常用API

在NHibernate中,常用的API包括以下几个部分:

Entity操作
  • 保存实体对象到数据库中
session.SaveOrUpdate(entity);
  • 删除数据库中的实体对象
session.Delete(entity);
  • 更新数据库中的实体对象
session.Update(entity);
  • 查询数据库中的实体对象
var list = session.CreateCriteria(typeof(User)).List<User>();
SQL操作
  • 执行SQL查询语句
var sqlQuery = session.CreateSQLQuery("SELECT * FROM user WHERE age > 18");
var list = sqlQuery.AddEntity(typeof(User)).List<User>();
  • 执行SQL更新语句
session.CreateSQLQuery("UPDATE user SET age=age+1").ExecuteUpdate();
HQL操作
  • 执行HQL查询语句
var hqlQuery = session.CreateQuery("FROM User WHERE age > :age");
hqlQuery.SetInt32("age", 18);
var list = hqlQuery.List<User>();
  • 执行HQL更新语句
var hqlQuery = session.CreateQuery("UPDATE User SET age=age+1");
hqlQuery.ExecuteUpdate();
总结

NHibernate是一个强大的ORM框架,可以简化数据访问操作,提高开发效率。掌握NHibernate的基本用法和API,对于程序员来说是非常有用的。