NHibernate与MySQL数据库交互(类和表的映射)

版权声明:本文为博主原创文章,未经博主允许不得转载。blog.liujunliang.com.cn https://blog.csdn.net/qq_33747722/article/details/78310755

原文地址: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数据通信


猜你喜欢

转载自blog.csdn.net/qq_33747722/article/details/78310755