Photon Server初识(二) ---通过NHibernate 映射数据库

 

一、下载 NHibernate.dill 官网:https://nhibernate.info

 或者通过NuGet下载(详情看上一节)

 

二、新建一个项目,并引入包

 

 

引入包

 

 

三、配置(重点)

  1、配置xml文件:(1)在项目根目录下新建文件 hibernate.cfg.xml  (配置数据库信息)

            (2)  新建文件夹 Model,里面新建model文件  DbModel.cs   (定义数据库表映射的model)

            (3)  新建文件夹Mappings,里面新建文件 DbModel.hbm.xml   (配置model和数据库表关联)

 

  2、调整文件属性

    (1)、hibernate.cfg.xml属性调整为始终复制

    (2)、DbModel.hbm.xml属性调整为嵌入的资源

 

 

  3、在项目根目录新建文件  hibernate.cfg.xml  (名字必须一样)

<?xml version="1.0" encoding="utf-8"?>

<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
    <session-factory>
        <property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
        
        <!-- mysql驱动这里是 MySQL5Dialect, mysql服务版本是5.7(最新版8.1好像链接不上) -->
        <property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
        
        <!-- 数据库连接信息 -->
        <property name="connection.connection_string">
            Server=localhost;Database=webdemo;User Id=root;Password=foto_cj1;
        </property>

        <!-- 调试时是否显示sql语句 -->
        <property name="show_sql">true</property>
        
        <!-- 有的版本需要添加下面这一项 -->
        <!-- <mapping assembly="Nbibernate"/> -->  
    </session-factory>
</hibernate-configuration>

 

     

   4、配置model  文件DbModel.cs

namespace Nbibernate.Model
{
    public class DbModel
    {
        //字段跟数据库表列一样
        public virtual int Id { get; set; }

        public virtual string Name { get; set; }

        public virtual int Age { get; set; }
        public virtual string Title { get; set; }
    }
}

 

  5、映射文件(models与数据库表关联) DbModel.hbm.xml

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

    <class name="DbModel" table="netweb">
        <id name="Id" column="id" type="Int32">
            <generator class="native" />
        </id>
        <property name="Name" column="name" type="String" />
        <property name="Age" column="age" type="Int32" />
        <property name="Title" column="title" type="String" />
    </class>

</hibernate-mapping>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="Nbibernate"
                   namespace="Nbibernate.Model">

assembly 项目名称 namespace 关联的Model文件得包路径
<class name="DbModel" table="netweb"> name model类名 table 关联的数据库表名
<id name="Id" column="id" type="Int32"> <generator class="native" /> </id> name Model的字段名, column 关联表的列名

 

assembly 项目名称在这里查看:

 

 

  四、测试数据库连接,在Program.cs中添加测试代码

namespace Nbibernate
{
    internal class Program
    {
        public static void Main(string[] args)
        {

            var configuration = new Configuration();
            configuration.Configure();               //解析hibernate.cfg配置文件
            configuration.AddAssembly("Nbibernate"); //解析 映射文件 DbModel.hbm.xml (有的版本在映射文件添加了,该处可以省略)

            ISessionFactory sessFa = null;
            ISession session = null;
//            ITransaction transaction = null;  //可以打开一个事务,处理多个操作时
            try
            {
                sessFa = configuration.BuildSessionFactory();
                session = sessFa.OpenSession();    //打开一个跟数据库的回话
//                transaction = session.BeginTransaction();  //打开一个事务

                var msg = new DbModel {Name = "Kiddd1111", Age = 13, Title = "Logeg"};
                var msg2 = new DbModel {Name = "L2222", Age = 23, Title = "tiles"};

                session.Save(msg);
                session.Save(msg2);
//                transaction.Commit();  //提交事务

                Console.WriteLine("ddddddd");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            finally
            {
//                transaction?.Dispose();  // 关闭事务  -- c#的新语法 ,如果不为null,则关闭
                session?.Close();
                sessFa?.Close();
            }

            Console.WriteLine("dddddddd");
            Console.ReadKey();
        }
    }
}
View Code

  运行代码,数据库查看结果。

 

参考文件:https://blog.csdn.net/qq_40323256/article/details/82914340

参考视频:https://www.bilibili.com/video/av35109390/?p=12 

 

 

posted @ 2019-10-12 17:23  Foto_CShow  阅读(441)  评论(0编辑  收藏  举报