NHibernate与MySQL数据库交互(类和表的映射)

来源:互联网 发布:开淘宝店空挂商品 编辑:程序博客网 时间:2024/05/16 14:02

原文地址:blog.liujunliang.com.cn

工具:VS2017、MySQL、SQLyog

如下图是客户端与服务器间的通信流程


上篇文章介绍到了PhotonServer服务器与Unity3d游戏客户端数据通信

本文就要介绍使用NHibernate与MySQL数据库交互

下篇文章准备编写PhotonServer调用NHibernate

·写在前面

NHibernate是一个面向.Net环境的对象到关系数据库的映射工具。

用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中。

通俗来说,就是将实例化的类对象将数据对应存储到关系型数据库的表中。

·配置数据库

下载安装MySQL数据库系统后安装SQLyog数据库客户端(可以自行选择其他客户端)

使用SQLyog创建一个自己的数据库,在数据库中添加一张数据表,这里我命名为student

如下图所示添加column



·使用NHibernate与MySQL数据交互

NHibernate配置官方文档

接着上一篇文章内容继续开发

在解决方案中创建一个控制台应用

右键项目,点击NuGet


添加库mysqldata.dll、connector.dll、nhibernate.dll



根据文档配置hibernate.cfg.xml,该配置文件的文件名和位置是固定的

<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=mydatabase;User ID=root;Password=*****;SslMode=None;</property>    <property name="show_sql">true</property>  </session-factory></hibernate-configuration>


NHibernate提供将一个类映射到数据库的表中

前面创建student表的时候,创建了学号、姓名、分数column

对应类也添加这三个字段

新建一个Student.cs

namespace LJL.Domain{    public class Student    {        public virtual int mID { get; set; }        public virtual string mName { get; set; }        public virtual int mScore { get; set; }    }}


接下来配置映射文件Student.hbm.xml

<?xml version="1.0" encoding="utf-8" ?><hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"                   auto-import="true"                   assembly="LJL"                            namespace="LJL.Domain"><!--程序集--><!--映射的类的命名空间-->  <!-- more mapping info here -->  <class name="Student" table="student"><!--类映射的表-->    <id name="mID" column="学号" type="Int32"><!--主键类型-->      <generator class="native"></generator>    </id>    <property name="mName" column="姓名" type="String"></property><!--属性-->    <property name="mScore" column="分数" type="Int32"></property>  </class></hibernate-mapping>


这样NHibernate配置文件都配置完成

最后在主函数里添加会话,将类信息映射保存到数据库中

using NHibernate;using NHibernate.Cfg;using LJL.Domain;namespace LJL{    class Program    {        static void Main(string[] args)        {            Configuration cfg = new Configuration();            //解析固定路径配置文件nhibernate.cfg.xml            cfg.Configure();            //映射目标程序集 解析映射文件 Student.xml ......            cfg.AddAssembly(typeof(Student).Assembly);            //创建会话工厂            ISessionFactory sessionFactory = cfg.BuildSessionFactory();            //创建会话            ISession session = sessionFactory.OpenSession();            Student sd = new Student { mID = 4, mName = "小刚", mScore = 50 };            session.Save(sd);        }    }}



·测试

运行程序,回到SQLyog,刷新student表

发现将我们类中的对象信息添加到了数据库中

对比之间使用MySql API,NHibernate极大地方便了我们编写代码!!!

原文地址:blog.liujunliang.com.cn

下一文:MySQL与PhotonServer数据通信

阅读全文
1 0
原创粉丝点击