1. 程式人生 > >NHibernate與MySQL資料庫互動(類和表的對映)

NHibernate與MySQL資料庫互動(類和表的對映)

工具:VS2017、MySQL、SQLyog

如下圖是客戶端與伺服器間的通訊流程


本文就要介紹使用NHibernate與MySQL資料庫互動

下篇文章準備編寫PhotonServer呼叫NHibernate

·寫在前面

NHibernate是一個面向.Net環境的物件到關係資料庫的對映工具。

用來把物件模型表示的物件對映到基於SQL的關係模型資料結構中。

通俗來說,就是將例項化的類物件將資料對應儲存到關係型資料庫的表中。

·配置資料庫

下載安裝MySQL資料庫系統後安裝SQLyog資料庫客戶端(可以自行選擇其他客戶端)

使用SQLyog建立一個自己的資料庫,在資料庫中新增一張資料表,這裡我命名為student

如下圖所示新增column


·使用NHibernate與MySQL資料互動

接著上一篇文章內容繼續開發

在解決方案中建立一個控制檯應用

右鍵專案,點選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極大地方便了我們編寫程式碼!!!

下一文:MySQL與PhotonServer資料通訊


相關推薦

NHibernateMySQL資料庫互動(對映)

工具:VS2017、MySQL、SQLyog如下圖是客戶端與伺服器間的通訊流程本文就要介紹使用NHibernate與MySQL資料庫互動下篇文章準備編寫PhotonServer呼叫NHibernate·寫在前面NHibernate是一個面向.Net環境的物件到關係資料庫的對映

JDBC詳解之mySQL資料庫的連線基本操作一

JDBC詳解 JDBC詳解 一 JDBC基本操作 MySQL的JDBC驅動包: mysql-connector-java-5.1.3

python tkinterMysql資料庫互動實現賬號登陸_code

 本例已經實現的資料庫password,資料庫的表以及表結構如下: 表中已經插入的資訊: 程式碼實現 # -*- coding: utf-8 -*- """ Created on Tue Nov 6 14:29:54 2018 Description:實現tk

MatlabMySQL資料庫互動基本操作

(1)將mysql-connector-java-5.1.42-bin.jar拷貝到Matlab安裝目錄下即D:\Program Files (x86)\MATLAB\R2016a\java\jar\toolbox(2)在D:\Program Files (x86)\MATLAB\R2016a\toolbox

python實現mysql資料庫互動

2.我選了linux作業系統下的安裝軟體,下載後是個shell指令碼,執行指令碼: bash Anaconda3-4.3.1-Linux-x86_64.sh (一路回車加提示按”yes” 3.安裝完成後退出終端,重新進入測試python的版本

Java實體的屬性型別mysql資料庫表字段型別對應

感謝原文博主https://blog.csdn.net/Hyo555/article/details/81943340 還有些經常用到的mysql語句 -- 新增表結構 DROP TABLE IF EXISTS `servicnn`; CREATE TABLE `servin` ( `id` i

SpringBoot中使用Mybatis Generator進行資料庫逆向工程自動生成實體mapping對映

1.首先在專案中建立一個GeneratorDisplay工具類,放在com.springbootdemo.util下 package com.springbootdemo.util; import java.io.File; import java.util.ArrayList; imp

node.jsmysql資料庫互動

我們已經建好了資料庫也建好了表,現在我們想查詢資料庫表中的內容,應該怎麼做呢?  程式碼如下: var mysql = require('mysql'); //匯入mysql包模組 var connection = mysql.createConnection({ h

利用Navicat PremiunNavicat for mysql實現MySQL資料庫結構對比同步

        在生產環境中,我們總會因為這樣或那樣的原因導致主從不同步,亦或者是測試環境要和生產環境進行同步,利用Navicat結構同步工具,不但能找出庫結構差異,還可以針對create、modify、drop等進行選擇性比對,非常的人性化,那麼一起來看下是如何操作的。 點選頂部導航欄的“工具”--選

MySQL資料庫5:GoMySQL互動

下載第三方依賴 go get github.com/jmoiron/sqlx go get github.com/go-sql-driver/mysql 引入依賴 import ( "github

nodejsmysql資料庫互動操作

首先通過npm命令安裝mysql模組 mysql資料庫版本:mysql-5.7.16-winx64,在官網下載zip包,修改一下配置,即可通過命令安裝到電腦上。 如何連線 連線流程程式碼如下: var mysql = require('my

MySQL資料庫》之練習資料:empdept的指令碼整理

一、Oracle版本 1、dept表 drop table dept; CREATE TABLE dept(     deptno NUMBER(2),     dname VARCHAR2(14) ,     loc VA

php+Mysql分頁 引用詳解

echo padding 數字 進行 else if sub var min func 一下內容為專用於分頁的類以及具體的方法和解析。<?php class Page { private $total;

python中的__new____init__,新式經典(2.x)

類型 pytho 圖片 pla object pri lba 版本 其它 在python2.x中,從object繼承得來的類稱為新式類(如class A(object))不從object繼承得來的類稱為經典類(如class A()) 新式類跟經典類的差別主要是以下幾點: 

一、MySQL資料庫之簡介安裝

一、基礎部分 1.資料庫是簡介     之前所學,資料要永久儲存,比如使用者註冊的使用者資訊,都是保存於檔案中,而檔案只能存在於某一臺機器上。 如果我們不考慮從檔案中讀取資料的效率問題,並且假設我們的程式所有的元件都執行在一臺機器上,那麼用檔案存

MySQL JDBC驅動版本MySQL資料庫版本對應關係

前言:前段時間發現在家使用和公司一樣的mysql jdbc驅動版本發生了異常,原因:家裡mysql資料庫版本與公司不一致導致。查詢了相關資料,發現mysql jdbc驅動版本與mysql資料庫版本有一定的對應關係,用錯了版本就會出現連線不上資料庫的異常。 這裡給出mysql jdbc驅動

mysql資料庫中 IN EXISTS 的誤區

       前言:最近在看 《高效能mysql第三版》 這本書,讀到子查詢優化那章,書中說mysql會將in子查詢改寫成exists查詢(書中基於的mysql版本是5.1.50和5.5),於是乎我又上網找了下資料,發現網上說法幾乎都是: &

mysql資料庫建立索引使用

1. 2               需要注意: ,後續新增修改索引。。需要注意索引需要的不同資料庫引擎 alter table user add fulltext(欄

『PHP學習筆記』系列七:讀取MySQL資料庫中的資料

資料表結構: 資料表資料:  從 MySQL 資料庫讀取資料:  SELECT 語句用於從資料表中讀取資料: SELECT column_name(s) FROM table_name 我們可以使用 * 號來讀取所有資料表中的欄位: SEL

PHP自己封裝一個原生mysql資料庫工具--進階常用仿PDO模式

<?php header('content-type:text/html;charset=utf-8'); error_reporting(E_ALL ^ E_DEPRECATED); // 設計一個mysql資料庫操作類 $config=array(     'hos