NO IMAGE

 

建立NHibernateTest的Windows解決方案

將Iesi.Collections.dll,log4net.dll和NHibernate.dll三個DLL檔案放入Bin資料夾

然後新增引用

Nhibernate框架可到http://mesh.dl.sourceforge.net/sourceforge/nhibernate/NHibernate-2.0.0.Beta1-src.zip下載

這是Beta1版本的,Beta2已經發布

 

第一步:建立User實體類

 

<!–

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

–> 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4
 5namespace NHibernateTest
 6ExpandedBlockStart.gifContractedBlock.gif{
 7    [Serializable]
 8    public class User
 9ExpandedSubBlockStart.gifContractedSubBlock.gif    {
10        private int _id;
11
12        public int Id
13ExpandedSubBlockStart.gifContractedSubBlock.gif        {
14ExpandedSubBlockStart.gifContractedSubBlock.gif            get { return _id; }
15ExpandedSubBlockStart.gifContractedSubBlock.gif            set { _id = value; }
16        }
17        private string _name;
18
19        public string Name
20ExpandedSubBlockStart.gifContractedSubBlock.gif        {
21ExpandedSubBlockStart.gifContractedSubBlock.gif            get { return _name; }
22ExpandedSubBlockStart.gifContractedSubBlock.gif            set { _name = value; }
23        }
24        private string _sex;
25
26        public string Sex
27ExpandedSubBlockStart.gifContractedSubBlock.gif        {
28ExpandedSubBlockStart.gifContractedSubBlock.gif            get { return _sex; }
29ExpandedSubBlockStart.gifContractedSubBlock.gif            set { _sex = value; }
30        }
31    }
32}
33

 

第二步:建立該實體類的資料對映User.hbm.xml檔案(xml檔案)

 

 

<!–

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

–> 1<?xml version=”1.0″ encoding=”utf-8″ ?>
 2<hibernate-mapping xmlns=”urn:nhibernate-mapping-2.2″ default-lazy=”false”>
 3  <class name=”NHibernateTest.User,NHibernateTest” table=”Users”>
 4    <id name=”Id” type=”Int32″>
 5      <generator class=”identity”/>
 6    </id>
 7    <property name=”Name” type=”String”/>
 8    <property name=”Sex” type=”String”/>
 9  </class>
10</hibernate-mapping>

 

將該檔案的屬性進行如下調整(選中檔案,按F4)

賦值到輸出目錄選擇    始終複製

生成操作改成     嵌入的資源

 

 

第三步:建立hibernate.cfg.xml配置檔案(xml檔案)

 

<!–

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

–> 1<?xml version=”1.0″ encoding=”utf-8″?>
 2<hibernate-configuration  xmlns=”urn:nhibernate-configuration-2.2″ >
 3  <session-factory name=”NHibernate.Test”>
 4    <property name=”connection.driver_class”>NHibernate.Driver.SqlClientDriver</property>
 5    <property name=”connection.connection_string”>
 6      Data Source=IMMENSITY/SQLEXPRESS;Initial Catalog=NHibernateTest;uid=sa;pwd=welcome;Pooling=False
 7    </property>
 8    <property name=”adonet.batch_size”>10</property>
 9    <property name=”show_sql”>false</property>
10    <property name=”dialect”>NHibernate.Dialect.MsSql2005Dialect</property>
11    <property name=”use_outer_join”>true</property>
12    <property name=”command_timeout”>10</property>
13    <property name=”query.substitutions”>true 1, false 0, yes ‘Y’, no ‘N'</property>
14    <mapping assembly=”NHibernateTest”/>
15  </session-factory>
16</hibernate-configuration>
17
18

更改屬性(同上):

賦值到輸出目錄選擇    始終複製

生成操作改成     嵌入的資源

 

 

相關屬性解釋如下:

hibernate-configuration:            NHibernate的版本資訊
session-factory:                       對應的類名稱
connection.provider:                 連線提供器的名稱
connection.driver_class:            連線驅動類的名稱
connection.connection_string:    資料庫連線字串
show_sql:                                是否顯示SQL語句
Dialect:                                    NHibernate方言(Dialect)的類名
use_outer_join:                        是否允許使用外連線
query.substitutions:                  把NHibernate查詢中的一些短語替換為SQL短語
assembly:                               程式集名稱 

 

 

最後在button的onClick事件中加入如下程式碼:

需匯入以下兩個名稱空間

using NHibernate.Cfg;
using NHibernate;

 

 

<!–

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

–> 1using System;
 2using System.Collections.Generic;
 3using System.ComponentModel;
 4using System.Data;
 5using System.Drawing;
 6using System.Text;
 7using System.Windows.Forms;
 8using NHibernate.Cfg;
 9using NHibernate;
10
11namespace NHibernateTest
12ExpandedBlockStart.gifContractedBlock.gif{
13    public partial class Form1 : Form
14ExpandedSubBlockStart.gifContractedSubBlock.gif    {
15        public Form1()
16ExpandedSubBlockStart.gifContractedSubBlock.gif        {
17            InitializeComponent();
18        }
19
20        private void button1_Click(object sender, EventArgs e)
21ExpandedSubBlockStart.gifContractedSubBlock.gif        {
22            //會話工廠
23            ISessionFactory factory = null;
24            Configuration cfg = new Configuration().Configure();
25            //構建配置檔案的物件
26            factory = cfg.BuildSessionFactory();
27            //例項化會話工廠
28            ISession session=factory.OpenSession();
29            //設定HQL查詢語句,HQL語句只能用於查詢
30            //注意,這裡的表名不是資料庫的表名,是你的實體類的名稱(User)
31            IQuery query = session.CreateQuery(“from User”);
32            //得到結果集
33            IList<User> list = query.List<User>();
34            //關閉會話物件
35            session.Close();
36            this.dataGridView1.DataSource = list;
37            
38        }
39    }
40}

執行,得到資料

我剛學習此框架,可能有說的不對的地方 ,忘各位指點 

原始檔下載:

http://files.cnblogs.com/immensity/NHibernateTest.rar