zoukankan      html  css  js  c++  java
  • 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 

     
  • 相关阅读:
    numpy 基础 —— np.linalg
    图像旋转后显示不完全
    opencv ---getRotationMatrix2D函数
    PS1--cannot be loaded because the execution of scripts is disabled on this system
    打开jnlp Faild to validate certificate, the application will not be executed.
    BATCH(BAT批处理命令语法)
    oracle vm virtualbox 如何让虚拟机可以上网
    merge 实现
    Windows batch,echo到文件不成功,只打印出ECHO is on.
    python2.7.6 , setuptools pip install, 报错:UnicodeDecodeError:'ascii' codec can't decode byte
  • 原文地址:https://www.cnblogs.com/cj8988/p/11661866.html
Copyright © 2011-2022 走看看