美文网首页Java游戏服务器开发MySQL
Unity3d服务端(1)-- 利用NHibernate和MyS

Unity3d服务端(1)-- 利用NHibernate和MyS

作者: 温冷月 | 来源:发表于2017-12-20 16:39 被阅读58次

    一、NHibernate的介绍和程序包的引入

    介绍:NHibernate是一个面向.NET环境(只能用C#做开发)的对象/关系数据库(MySQL或者其他数据库)映射工具。可以理解为一个中间件,有封装好的数据库接口,便于代码对数据库的访问。

    程序包的导入如下图:

    image.png image.png

    二、一些基础配置

    image.png

    三、数据库连接配置

    image.png image.png

    nhibernate.cfg.xml文件的内容

    <?xml version="1.0" encoding="utf-8" ?>
    <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=mygamedb;User ID=root;Password=root</property>
    
        <property name="show_sql">true</property>
      </session-factory>
    </hibernate-configuration>
    

    四、类和表的映射

    image.png image.png

    User.hbm.xml 配置文件内容、配置文件属性的设置

    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                       assembly="NHibernateMySQL"
                       namespace="NHibernateMySQL.Model">
    
      <class name="User" table="users">
        <id name="ID" column="id" type="Int32">
          <generator class="native"></generator>
        </id>
        <property name="Username" column="username" type="String"></property>
        <property name="Password" column="password" type="String"></property>
        <property name="Registedate" column="registedate" type="Date"></property>
      </class>
    
    </hibernate-mapping>
    
    image.png

    五、解析两个xml文件并进行添加操作,运行后你就可以在数据中看到插入的内容。

    image.png
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using NHibernate;
    using NHibernate.Cfg;
    using NHibernateMySQL.Model;
    
    
    namespace NHibernateMySQL
    {
        class Program
        {
            static void Main(string[] args)
            {
                var configuration = new Configuration();
                configuration.Configure("nhibernate.cfg.xml");//解析 nhibernate.cfg.xml文件,要求此文件要打包到.exe中
                configuration.AddAssembly("NHibernateMySQL");//解析映射文件 User.hbm.xml
    
                AddData(configuration);
                Console.ReadKey();
            }
    
            static void AddData(Configuration configuration)
            {
                ISessionFactory sessionFactory = null;
                ISession session = null;
                try
                {
                    sessionFactory = configuration.BuildSessionFactory();
                    session = sessionFactory.OpenSession();//打开一个与数据库的会话
                    
                    User user = new User()
                    {
                        Username = "貂蝉",
                        Password = "diaochan"
                    };
                    
                    session.Save(user);
                }
                catch (Exception e)//捕捉异常
                {
                    Console.WriteLine(e.ToString());
                }
                finally//任何情况都会执行
                {
                    if (sessionFactory != null)
                    {
                        sessionFactory.Close();
                    }
                    if (session != null)
                    {
                        session.Close();
                    }
                }
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:Unity3d服务端(1)-- 利用NHibernate和MyS

        本文链接:https://www.haomeiwen.com/subject/ukxgwxtx.html