1. 程式人生 > >第一篇:NHibernate 連結Mysql 資料

第一篇:NHibernate 連結Mysql 資料

NHibernate 連結 Mysql 資料 並儲存資料

第一步:官網文件
第二步:匯入所需要的dll

MySql.data.dll + NHibernate.dll + Iesi.Collections(這個是因為報錯後面加入的)

第三步:建立資料庫和資料表

注意:安裝完Mysql後連同Workbench一起安裝可以幫助不懂sql 的人進行GUI介面操作

  1. 建立資料庫:hibernate 並使用utf-8的預設(因為有可能有中文)
  2. 建立資料表:product 並建立資料表的列
  3. 建立完後如下圖

這裡寫圖片描述

第四步:建立Model
  1. 提示:Model就是我們的資料庫對應的列
  2. 建立Domain資料夾 建立Product.cs類檔案,並新增如下程式碼
namespace FirstSolution.Domain
{
    public class Product
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual string Category { get; set; }
    }
}
第五步:建立Model的對映檔案

提示:Mapping檔案就是我們的Product的列和資料庫裡面的列的對應關係,這裡也暗示了我們Model裡面的名字可以和資料庫的不同,但是一般情況定義為相同的

  1. 建立Mapping資料夾
  2. 建立Product.hbm.xml檔案,和下面的對映程式碼
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
           assembly="FirstSolution"
           namespace="FirstSolution.Domain">
  <class name="Product" table="product">
    <id name="Id"
column="id" type="Int32">
<generator class="native" /> </id> <property name="Name" column="Name" type="String"/> <property name="Category" column="Category" type="String"/> </class> </hibernate-mapping>
第六步:配置資料庫訪問檔案
提示:這一步配置的內容實際上是告訴程式怎麼去連線資料庫
  1. 建立hibernate.cfg.xml檔案,設定屬性為複製
<?xml version="1.0" encoding="utf-8" ?>
<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">Data Source=localhost;Database=nhibernate;User ID=root;Password=root;</property>
    <property name="show_sql">true</property>
  </session-factory>
</hibernate-configuration>
第七步:測試
using FirstSolution.Domain;
using NHibernate;
using NHibernate.Cfg;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FirstSolution
{
    class Program
    {
        static void Main(string[] args)
        {
            var cfg = new Configuration();
            cfg.Configure();
            cfg.AddAssembly("FirstSolution"); //新增程式集

            ISessionFactory sessionFactory = null;
            ISession session = null;
            try
            {
                sessionFactory = cfg.BuildSessionFactory();
                session = sessionFactory.OpenSession();
                Product user = new Product() { Name = "pengdongwei3", Category = "新插入的內容" };
                session.Save(user);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            finally
            {
                if (session != null)
                {
                    session.Close();
                }
                if (sessionFactory != null)
                {
                    sessionFactory.Close();

                }

            }
            Console.ReadKey();
        }
    }
}

測試結果如下圖表明成功連結資料庫並儲存檔案
這裡寫圖片描述

沒報錯,我們再看下資料庫 很穩 資料完美插入了
這裡寫圖片描述