一、下载 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  (名字必须一样)

  1. <?xml version="1.0" encoding="utf-8"?>
  2.  
  3. <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" >
  4. <session-factory>
  5. <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
  6.  
  7. <!-- mysql驱动这里是 MySQL5Dialect, mysql服务版本是5.7(最新版8.1好像链接不上) -->
  8. <property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
  9.  
  10. <!-- 数据库连接信息 -->
  11. <property name="connection.connection_string">
  12. Server=localhost;Database=webdemo;User Id=root;Password=foto_cj1;
  13. </property>
  14.  
  15. <!-- 调试时是否显示sql语句 -->
  16. <property name="show_sql">true</property>
  17.  
  18. <!-- 有的版本需要添加下面这一项 -->
  19. <!-- <mapping assembly="Nbibernate"/> -->
  20. </session-factory>
  21. </hibernate-configuration>

     

   4、配置model  文件DbModel.cs

  1. namespace Nbibernate.Model
  2. {
  3. public class DbModel
  4. {
  5. //字段跟数据库表列一样
  6. public virtual int Id { get; set; }
  7.  
  8. public virtual string Name { get; set; }
  9.  
  10. public virtual int Age { get; set; }
  11. public virtual string Title { get; set; }
  12. }
  13. }

  5、映射文件(models与数据库表关联) DbModel.hbm.xml

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
  3. assembly="Nbibernate"
  4. namespace="Nbibernate.Model">
  5.  
  6. <class name="DbModel" table="netweb">
  7. <id name="Id" column="id" type="Int32">
  8. <generator class="native" />
  9. </id>
  10. <property name="Name" column="name" type="String" />
  11. <property name="Age" column="age" type="Int32" />
  12. <property name="Title" column="title" type="String" />
  13. </class>
  14.  
  15. </hibernate-mapping>
  1. <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
  2. assembly="Nbibernate"
  3. namespace="Nbibernate.Model">
  4.  
  5. assembly 项目名称
  6. namespace 关联的Model文件得包路径

  7. <class name="DbModel" table="netweb">
  8. name model类名
  9. table 关联的数据库表名

  10. <id name="Id" column="id" type="Int32">
  11. <generator class="native" />
  12. </id>
  13.  
  14. name Model的字段名, column 关联表的列名
  1. assembly 项目名称在这里查看:

  四、测试数据库连接,在Program.cs中添加测试代码

  1. namespace Nbibernate
  2. {
  3. internal class Program
  4. {
  5. public static void Main(string[] args)
  6. {
  7.  
  8. var configuration = new Configuration();
  9. configuration.Configure(); //解析hibernate.cfg配置文件
  10. configuration.AddAssembly("Nbibernate"); //解析 映射文件 DbModel.hbm.xml (有的版本在映射文件添加了,该处可以省略)
  11.  
  12. ISessionFactory sessFa = null;
  13. ISession session = null;
  14. // ITransaction transaction = null; //可以打开一个事务,处理多个操作时
  15. try
  16. {
  17. sessFa = configuration.BuildSessionFactory();
  18. session = sessFa.OpenSession(); //打开一个跟数据库的回话
  19. // transaction = session.BeginTransaction(); //打开一个事务
  20.  
  21. var msg = new DbModel {Name = "Kiddd1111", Age = , Title = "Logeg"};
  22. var msg2 = new DbModel {Name = "L2222", Age = , Title = "tiles"};
  23.  
  24. session.Save(msg);
  25. session.Save(msg2);
  26. // transaction.Commit(); //提交事务
  27.  
  28. Console.WriteLine("ddddddd");
  29. }
  30. catch (Exception e)
  31. {
  32. Console.WriteLine(e);
  33. throw;
  34. }
  35. finally
  36. {
  37. // transaction?.Dispose(); // 关闭事务 -- c#的新语法 ,如果不为null,则关闭
  38. session?.Close();
  39. sessFa?.Close();
  40. }
  41.  
  42. Console.WriteLine("dddddddd");
  43. Console.ReadKey();
  44. }
  45. }
  46. }

  运行代码,数据库查看结果。

参考文件:https://blog.csdn.net/qq_40323256/article/details/82914340

参考视频:https://www.bilibili.com/video/av35109390/?p=12

  1.  

Photon Server初识(二) ---通过NHibernate 映射数据库的更多相关文章

  1. Photon Server初识(一) ---C#链接MySql

    环境: 1.MAC电脑,JetBrains Rider编辑器 2.本地MySql5.7 (开始安装8.1发现使用 NHibernate 映射链接不上) 一.新建工程 二.引入dll包(MySQL.Da ...

  2. Photon Server初识(四) --- 部署自己的服务Photon Server

    准备工作: 1.一台 window 虚拟机(本机是window也行) 2.下载SDK : https://www.photonengine.com/zh-CN/sdks#server 一:SDK介绍 ...

  3. Photon Server初识(三) ---ORM映射改进

    一:新建一些管理类, 二.实现每个管理类 (1)NHibernateHelper.cs 类,管理数据库连接 using NHibernate; using NHibernate.Cfg; namesp ...

  4. Photon Server初识(六) --- 客户端与服务端消息传递

    前一章客户端与服务端连接成功,现在需要前后端进行数据传递. 一.前端发送消息.在项目Scripts目录中新建脚本 TestSer.cs.并挂载到相机上 二.客户端发送数据给服务端.编辑客户端代码 Te ...

  5. Photon Server初识(五) --- 客户端连接服务端

    准备:Unity开开发IDE. 一.新建Unity3D项目 导入包,在资源下新建目录 Plugins .在之前解压的SDK目录 lib中找到 Photon3Unity3D.dll,拖到新建的目前下 二 ...

  6. 一、初识MySQL数据库 二、搭建MySQL数据库(重点) 三、使用MySQL数据库 四、认识MySQL数据库的数据类型 五、操作MySQL数据库的数据(重点)

    一.初识MySQL数据库 ###<1>数据库概述     1. 数据库         长期存储在计算机内的,由组织的可共享的数据集合         存储数据的仓库         文件 ...

  7. 咱就入个门之NHibernate映射文件配置(二)

    上一篇主要介绍了NHibernate映射文件的基础配置,这篇我们介绍下NHibernate的一对多及多对一配置(文中我直接使用双向关联,即一和多两端都配置,开发中可以只使用一端),同时略带介绍下NHi ...

  8. Photon Server 实现注册与登录(一) --- Hibernate整合到项目中

    本系列实现目的:基于Photon Server实现注册于登录 一.拷贝Nbibernate项目的文件到MyGamerServer项目中. 二.数据库新建表,结构如下 三.修改文件名和配置 (1).将拷 ...

  9. NHibernate 映射基础(第三篇) 简单映射、联合主键

    NHibernate 映射基础(第三篇) 简单映射.联合主键 NHibernate完全靠配置文件获取其所需的一切信息,其中映射文件,是其获取数据库与C#程序关系的所有信息来源. 一.简单映射 下面先来 ...

随机推荐

  1. 一、微服务(Microservices)【翻译】

    1.微服务 “微服务架构(Microservice Architecture)”一词在过去几年里广泛的传播,它用于描述一种设计应用程序的特别方式,作为一套独立可部署的服务.目前,这种架构方式还没有准确 ...

  2. Java多线程之ThreadPoolExecutor详解使用

    1.概述 我将讲解JAVA原生线程池的基本使用,并由此延伸出JAVA中和线程管理相关的类结构体系,然后我们详细描述JAVA原生线程池的结构和工作方式 2.为什么要使用线程池 前文我们已经讲到,线程是一 ...

  3. Android webView加载图片显示过大的问题

    webview的基本使用流程这里我就不重复说明了,本篇针对的是文章详情加载完成后出现的情况,这里我们使用的方法是:通过js脚本,重置img标签中图片的宽度和高度. 使用步骤: 1.此方法需要使用js, ...

  4. handler四元素

    Looper 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列). 我们知道一个线程是一段可执行的代码,当可执行代码执行完成后,线程生命周期便会终止,线程就 ...

  5. Python - 二叉树, 堆, headq 模块

    二叉树 概念 二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树), 或者由一个根结点和两棵互不相交的.分别称为根结点的左子树和右子树组成. 特点 每个结点最多有两颗子树,所 ...

  6. 网站title,meta,description如何设置,长度大小多少合适!

    转自:http://www.os1010.com/archives/1682 如 何 把 握 html 网 页 中 的 meta 标 签 对于高级的搜索引擎来说,html 的meta 标签并不是什么新 ...

  7. 利用Spring的AbstractRoutingDataSource解决多数据源的问题【代码手动切换,非AOP】

    转: 利用Spring的AbstractRoutingDataSource解决多数据源的问题 多数据源问题很常见,例如读写分离数据库配置. 原来的项目出现了新需求,局方要求新增某服务器用以提供某代码, ...

  8. nginx.conf 配置 (反向代理,负载均衡,fastdfs model)

    #user nobody;worker_processes 1; #error_log logs/error.log;#error_log logs/error.log notice;#error_l ...

  9. vue项目报错

    在项目根目录下的.eslintrc.js中的rules下添加以下内容: /*代表不用eslint检测代码规范*/ "useEslint":false, /* tab和空格混用缩进, ...

  10. js 生成树以及关键字搜索生成树

    function main(keywords,data){ function fn(arr){ var flag = false; for(var i = 0;i <arr.length;i++ ...