建立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實體類
2using System.Collections.Generic;
3using System.Text;
4
5namespace NHibernateTest
6{
7 [Serializable]
8 public class User
9 {
10 private int _id;
11
12 public int Id
13 {
14 get { return _id; }
15 set { _id = value; }
16 }
17 private string _name;
18
19 public string Name
20 {
21 get { return _name; }
22 set { _name = value; }
23 }
24 private string _sex;
25
26 public string Sex
27 {
28 get { return _sex; }
29 set { _sex = value; }
30 }
31 }
32}
33
第二步:創建該實體類的數據映射User.hbm.xml文件(xml文件)
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文件)
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;
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
12{
13 public partial class Form1 : Form
14 {
15 public Form1()
16 {
17 InitializeComponent();
18 }
19
20 private void button1_Click(object sender, EventArgs e)
21 {
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