一、下载 NHibernate.dill 官网:https://nhibernate.info
或者通过NuGet下载(详情看上一节)
二、新建一个项目,并引入包
引入包
三、配置(重点)
1、配置xml文件:(1)在项目根目录下新建文件 hibernate.cfg.xml (配置数据库信息)
(2) 新建文件夹 Model,里面新建model文件 DbModel.cs (定义数据库表映射的model)
(3) 新建文件夹Mappings,里面新建文件 DbModel.hbm.xml (配置model和数据库表关联)
2、调整文件属性
(1)、hibernate.cfg.xml属性调整为始终复制
(2)、DbModel.hbm.xml属性调整为嵌入的资源
3、在项目根目录新建文件 hibernate.cfg.xml (名字必须一样)
<?xml version="1.0" encoding="utf-8"?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
<session-factory>
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<!-- mysql驱动这里是 MySQL5Dialect, mysql服务版本是5.7(最新版8.1好像链接不上) -->
<property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
<!-- 数据库连接信息 -->
<property name="connection.connection_string">
Server=localhost;Database=webdemo;User Id=root;Password=foto_cj1;
</property>
<!-- 调试时是否显示sql语句 -->
<property name="show_sql">true</property>
<!-- 有的版本需要添加下面这一项 -->
<!-- <mapping assembly="Nbibernate"/> -->
</session-factory>
</hibernate-configuration>
4、配置model 文件DbModel.cs
namespace Nbibernate.Model { public class DbModel { //字段跟数据库表列一样 public virtual int Id { get; set; } public virtual string Name { get; set; } public virtual int Age { get; set; } public virtual string Title { get; set; } } }
5、映射文件(models与数据库表关联) DbModel.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Nbibernate"
namespace="Nbibernate.Model">
<class name="DbModel" table="netweb">
<id name="Id" column="id" type="Int32">
<generator class="native" />
</id>
<property name="Name" column="name" type="String" />
<property name="Age" column="age" type="Int32" />
<property name="Title" column="title" type="String" />
</class>
</hibernate-mapping>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Nbibernate" namespace="Nbibernate.Model">
assembly 项目名称 namespace 关联的Model文件得包路径
<class name="DbModel" table="netweb"> name model类名 table 关联的数据库表名
<id name="Id" column="id" type="Int32"> <generator class="native" /> </id> name Model的字段名, column 关联表的列名
assembly 项目名称在这里查看:
四、测试数据库连接,在Program.cs中添加测试代码
namespace Nbibernate { internal class Program { public static void Main(string[] args) { var configuration = new Configuration(); configuration.Configure(); //解析hibernate.cfg配置文件 configuration.AddAssembly("Nbibernate"); //解析 映射文件 DbModel.hbm.xml (有的版本在映射文件添加了,该处可以省略) ISessionFactory sessFa = null; ISession session = null; // ITransaction transaction = null; //可以打开一个事务,处理多个操作时 try { sessFa = configuration.BuildSessionFactory(); session = sessFa.OpenSession(); //打开一个跟数据库的回话 // transaction = session.BeginTransaction(); //打开一个事务 var msg = new DbModel {Name = "Kiddd1111", Age = 13, Title = "Logeg"}; var msg2 = new DbModel {Name = "L2222", Age = 23, Title = "tiles"}; session.Save(msg); session.Save(msg2); // transaction.Commit(); //提交事务 Console.WriteLine("ddddddd"); } catch (Exception e) { Console.WriteLine(e); throw; } finally { // transaction?.Dispose(); // 关闭事务 -- c#的新语法 ,如果不为null,则关闭 session?.Close(); sessFa?.Close(); } Console.WriteLine("dddddddd"); Console.ReadKey(); } } }
运行代码,数据库查看结果。
参考文件:https://blog.csdn.net/qq_40323256/article/details/82914340
参考视频:https://www.bilibili.com/video/av35109390/?p=12