📅  最后修改于: 2023-12-03 15:33:07.435000             🧑  作者: Mango
NHibernate是一个基于Java的Hibernate ORM框架的.NET版本,它提供了一种将面向对象的域模型映射到传统的关系数据库中的方法,同时提供了数据检索和查询机制。
ORM(Object-Relational Mapping)是一种将关系数据库中的数据映射到面向对象的程序中的技术。它将数据库和程序之间的转换过程自动化,并减少了编写SQL代码的需求。通过将数据库表映射到程序中的类和对象,ORM框架可以实现面向对象的编程范式,并使程序员能够更方便地对数据进行管理。
NHibernate具有以下特点:
安装NHibernate,可以通过NuGet来安装;
配置hibernate.cfg.xml文件,包括数据库类型、连接字符串、映射文件等:
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="dialect">NHibernate.Dialect.MsSql2012Dialect</property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Data Source=.;Initial Catalog=testdb;User ID=test;Password=test</property>
<mapping assembly="NHibernateDemo"/>
</session-factory>
</hibernate-configuration>
创建实体类,用于映射数据库表:
public class Customer
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Address { get; set; }
}
创建映射文件,将实体类映射到数据库表:
<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="NHibernateDemo">
<class name="NHibernateDemo.Customer, NHibernateDemo">
<id name="Id">
<generator class="native"/>
</id>
<property name="Name"/>
<property name="Address"/>
</class>
</hibernate-mapping>
创建SessionFactory:
var configuration = new Configuration();
configuration.Configure();
var sessionFactory = configuration.BuildSessionFactory();
在保存或查询数据时,通过打开Session来进行操作:
using (var session = sessionFactory.OpenSession())
{
//保存数据
using (var transaction = session.BeginTransaction())
{
var customer = new Customer { Name = "张三", Address = "上海市" };
session.Save(customer);
transaction.Commit();
}
//查询数据
var customers = session.Query<Customer>().ToList();
}
NHibernate是一个功能强大的ORM框架,可以降低开发人员的工作量并提高开发效率。通过NHibernate,我们可以更方便地对数据库进行操作,同时还可以实现面向对象的编程范式。