一、下载 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 = , Title = "Logeg"};
var msg2 = new DbModel {Name = "L2222", Age = , 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

 

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. 使用Camtasia 9 录制屏幕软件

    Camtasia 9 录制屏幕软件,并且有丰富的专业剪辑功能.

  2. HDU 1024 Max Sum Plus Plus ——(M段区间的最大和)

    感觉有点奇怪的是这题明明是n^2的复杂度,n=1e6竟然能过= =.应该是数据水了. dp[i][j]表示前j个数,分成i段,且最后一段的最后一个为a[j]的答案.那么转移式是:dp[i][j] = ...

  3. vue中解决three.js出现内存泄漏丢失上下文问题

    在跳转页面时添加以上代码即可. 在spa项目中,跳转页面并不会清楚已经创建的webgl实例,需要手动清楚.

  4. 20191121-5 Scrum立会报告+燃尽图 02

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/10066 一.小组情况 组长:贺敬文组员:彭思雨 王志文 位军营 徐丽君队名 ...

  5. 脚本:将git项目下载到本地并启动

    大致思路:从git上clone源代码到本地:使用mvn package将源代码达成war/jar包:将打好的包放到tomcatpath/webapps/下:到tomcatpath/bin/下执行res ...

  6. 用PHP自带函数对二维数组进行排序

    经常会面临这样的需求,虽然有时候我们可以在数据库查询的时候,直接对数据进行排序,但还是无法满足日益复杂的业务需求. 这里边会用到两个函数 一个是array_column()函数,这个函数接受三个参数. ...

  7. jeecg随笔

    1.根据数据字典code查找该字典下的元素: SELECT typecode,typename from t_s_type where typegroupid=(select id from t_s_ ...

  8. 在Python中使用glob模块查找文件路径的方法

    在Python中使用glob模块查找文件路径的方法 glob模块是最简单的模块之一,内容非常少.用它可以查找符合特定规则的文件路径名.跟使用windows下的文件搜索差不多.查找文件只用到三个匹配符: ...

  9. c++空类为什么占用1个字符

    在C++中空类会占一个字节,这是为了让对象的实例能够相互区别.具体来说,空类同样可以被实例化,并且每个实例在内存中都有独一无二的地址,因此,编译器会给空类隐含加上一个字节,这样空类实例化之后就会拥有独 ...

  10. socket --自己简单的理解

    一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可 ...