📅  最后修改于: 2023-12-03 15:03:11.191000             🧑  作者: Mango
NHibernate是一个专业的ORM(Object Relational Mapping)框架,可以将数据库中的数据映射到应用程序中的对象模型中。NHibernate可以提高开发效率,简化业务逻辑代码的编写,避免直接与数据库打交道的麻烦。
安装NHibernate需要引用NHibernate程序集,可以通过NuGet管理器添加NHibernate包:
Install-Package 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工厂,可以通过Configuration对象的BuildSessionFactory方法来完成:
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;
var configuration = new Configuration();
configuration.Configure();
var sessionFactory = configuration.BuildSessionFactory();
在进行数据库操作前,需要先创建session对象,可以通过sessionFactory的OpenSession方法来完成:
var session = sessionFactory.OpenSession();
至此,NHibernate的基本配置已经完成,可以开始进行数据访问操作了。
在NHibernate中,常用的API包括以下几个部分:
session.SaveOrUpdate(entity);
session.Delete(entity);
session.Update(entity);
var list = session.CreateCriteria(typeof(User)).List<User>();
var sqlQuery = session.CreateSQLQuery("SELECT * FROM user WHERE age > 18");
var list = sqlQuery.AddEntity(typeof(User)).List<User>();
session.CreateSQLQuery("UPDATE user SET age=age+1").ExecuteUpdate();
var hqlQuery = session.CreateQuery("FROM User WHERE age > :age");
hqlQuery.SetInt32("age", 18);
var list = hqlQuery.List<User>();
var hqlQuery = session.CreateQuery("UPDATE User SET age=age+1");
hqlQuery.ExecuteUpdate();
NHibernate是一个强大的ORM框架,可以简化数据访问操作,提高开发效率。掌握NHibernate的基本用法和API,对于程序员来说是非常有用的。