zoukankan      html  css  js  c++  java
  • 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/ 目录下。(可能需要先停止服务)。在启动服务,查看数据库。

  • 相关阅读:
    过滤器--起步阶段
    常用指令-起步阶段
    模型和控制器-起步阶段
    指令介绍-起步阶段
    AngularJS简介-起步阶段
    c++之helloworld与命名空间
    c++ 之重要性
    一个没曾摸透的程序
    linux中什么是文件结构体?
    很全的linux网络编程技巧
  • 原文地址:https://www.cnblogs.com/cj8988/p/11690513.html
Copyright © 2011-2022 走看看