原文地址:blog.liujunliang.com.cn
工具:VS2017、MySQL、SQLyog
如下图是客户端与服务器间的通信流程
上篇文章介绍到了PhotonServer服务器与Unity3d游戏客户端数据通信
本文就要介绍使用NHibernate与MySQL数据库交互
下篇文章准备编写PhotonServer调用NHibernate
·写在前面
NHibernate是一个面向.Net环境的对象到关系数据库的映射工具。
用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中。
通俗来说,就是将实例化的类对象将数据对应存储到关系型数据库的表中。
·配置数据库
下载安装MySQL数据库系统后安装SQLyog数据库客户端(可以自行选择其他客户端)
使用SQLyog创建一个自己的数据库,在数据库中添加一张数据表,这里我命名为student
如下图所示添加column
·使用NHibernate与MySQL数据交互
接着上一篇文章内容继续开发
在解决方案中创建一个控制台应用
右键项目,点击NuGet
添加库mysqldata.dll、connector.dll、nhibernate.dll
根据文档配置hibernate.cfg.xml,该配置文件的文件名和位置是固定的
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<!--使用什么数据库-->
<property name="connection.connection_string">Server=localhost;Database=mydatabase;User ID=root;Password=*****;SslMode=None;</property>
<property name="show_sql">true</property>
</session-factory>
</hibernate-configuration>
NHibernate提供将一个类映射到数据库的表中
前面创建student表的时候,创建了学号、姓名、分数column
对应类也添加这三个字段
新建一个Student.cs
namespace LJL.Domain
{
public class Student
{
public virtual int mID { get; set; }
public virtual string mName { get; set; }
public virtual int mScore { get; set; }
}
}
接下来配置映射文件Student.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
auto-import="true"
assembly="LJL"
namespace="LJL.Domain"><!--程序集--><!--映射的类的命名空间-->
<!-- more mapping info here -->
<class name="Student" table="student"><!--类映射的表-->
<id name="mID" column="学号" type="Int32"><!--主键类型-->
<generator class="native"></generator>
</id>
<property name="mName" column="姓名" type="String"></property><!--属性-->
<property name="mScore" column="分数" type="Int32"></property>
</class>
</hibernate-mapping>
这样NHibernate配置文件都配置完成
最后在主函数里添加会话,将类信息映射保存到数据库中
using NHibernate;
using NHibernate.Cfg;
using LJL.Domain;
namespace LJL
{
class Program
{
static void Main(string[] args)
{
Configuration cfg = new Configuration();
//解析固定路径配置文件nhibernate.cfg.xml
cfg.Configure();
//映射目标程序集 解析映射文件 Student.xml ......
cfg.AddAssembly(typeof(Student).Assembly);
//创建会话工厂
ISessionFactory sessionFactory = cfg.BuildSessionFactory();
//创建会话
ISession session = sessionFactory.OpenSession();
Student sd = new Student { mID = 4, mName = "小刚", mScore = 50 };
session.Save(sd);
}
}
}
·测试
运行程序,回到SQLyog,刷新student表
发现将我们类中的对象信息添加到了数据库中
对比之间使用MySql API,NHibernate极大地方便了我们编写代码!!!
原文地址:blog.liujunliang.com.cn
下一文:MySQL与PhotonServer数据通信