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

本系列实现目的:基于Photon Server实现注册于登录

一、拷贝Nbibernate项目的文件到MyGamerServer项目中。

二、数据库新建表,结构如下

三、修改文件名和配置

  (1)、将拷贝的文件修改一下名字(不是必须)。修改为与User相关的。注意:修改文件下的包名也得修改,由 Nbibernate.l 修改为MyGameServer.

  (2)、Model文件调整。目录 Model/下的User.cs文件字段修改为与数据库users表字段相同

namespace MyGameServer.Model
{
    public class User
    {
        //字段跟数据库表列一样
        public virtual int Id { get; set; }
        public virtual string UserName { get; set; }
        public virtual string Password { get; set; }
        public virtual string RegisterDate { get; set; }
    }
}

     (3)、映射文件 Mappings/ 目录下的User.hbm.xml 修改

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="MyGameServer"
                   namespace="MyGameServer.Model">

    <class name="User" table="users">
        <id name="Id" column="id" type="Int32">
            <generator class="native" />
        </id>
        <property name="UserName" column="username" type="String" />
        <property name="Password" column="password" type="String" />
        <property name="RegisterDate" column="registerdate" type="String" />
</class>

</hibernate-mapping>

 (4)、NHibernateHelper.cs修改

using NHibernate;
using NHibernate.Cfg;

namespace MyGameServer
{
    public class NHibernateHelper
    {
        private static ISessionFactory _sessionFactory;

        private static ISessionFactory SessionFactory
        {
            get
            {
                if (_sessionFactory == null)
                {
                    var config = new Configuration();
                    config.Configure(); //解析nhibernate.cfg配置文件
                    config.AddAssembly("MyGameServer"); //解析 映射文件 ,修改为当前项目

                    _sessionFactory = config.BuildSessionFactory();
                }

                return _sessionFactory;
            }
        }

        public static ISession OpenSession()
        {
            ////打开一个跟数据库的回话
            return SessionFactory.OpenSession();
        }
    }
}

四、测试一下

  在项目文件 MyGameServer.cs文件Setup()方法中添加测试代码

   //服务器启动时调用
        protected override void Setup()
        {
            LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance);
            GlobalContext.Properties["Photon:ApplicationLogPath"] = Path.Combine(ApplicationRootPath, "log");
            GlobalContext.Properties["LogFileName"] = "MySer_" + ApplicationName;
            XmlConfigurator.ConfigureAndWatch(new FileInfo(Path.Combine(BinaryPath, "log4net.config")));
            
            log.Info("MyGameServer start----------");

    
            //测试数据库代码
            UserManager userManager = new UserManager();
            User user = new User(){UserName = "ffff", Password = "dwwww"};
            userManager.Add(user);
        }

重新编译项目,将bin/Debug 下的文件拷贝到服务器上  deploy/MyGameServer/bin/ 目录下。(可能需要先停止服务)。在启动服务,查看数据库。

原文地址:https://www.cnblogs.com/cj8988/p/11690513.html