NHibernate

项目结构图。

NHibernate

 

首先引用程序集,在lib文件夹下的程序集事都要用到的,之后在引用中引用它们。

 

 

 

 

 

 

然后是App.config配置文件:

 1 <?xml version="1.0" encoding="utf-8" ?>

 2 

 3 <!--暂时只能有这么多代码-->

 4 <configuration>

 5 

 6   <configSections>

 7     <section name ="hibernate-configuration" type ="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" requirePermission="false"/>

 8   </configSections>

 9 

10   <hibernate-configuration  xmlns ="urn:nhibernate-configuration-2.2">

11     <session-factory>

12       <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider, NHibernate</property>

13       <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>

14       <property name="connection.connection_string">Server=HUO-PC\SQLEXPRESS;initial catalog=NHibernate;Integrated Security=SSPI</property>

15       <property name="adonet.batch_size">10</property>

16       <property name="show_sql">true</property> <!--是不是显示SQL语句-->

17       <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>

18       <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>

19     </session-factory>

20   </hibernate-configuration>

21   

22 </configuration>

 

如果是用App.config文件那么,在Load加载时间中的代码应该是这样写:

1             //读取配置文件

2             //读取所有映射文件

3             Configuration config = new Configuration().AddAssembly("Test");

 

 

 

 

 

 

 

如果是使用Nhibernate.cfg.xml文件,那么代码应该这样写:

NHibernate

1             //读取配置文件

2             //读取所有映射文件

3             //如果使用这种方法,那么要在项目中添加 NHibernate.cfg.xml 文件

4             //如果是放在项目中的文件夹中,那么前面要加上文件夹的名称,比如 @"Config/NHibernate.cfg.xml"

5             Configuration config = new Configuration().Configure(@"Config/NHibernate.cfg.xml");

 

 

 

 

 

 

 

 

运行Form1窗口:

NHibernate

 

 

主要代码:

  1 using System;

  2 using System.Collections.Generic;

  3 using System.ComponentModel;

  4 using System.Data;

  5 using System.Drawing;

  6 using System.Linq;

  7 using System.Text;

  8 using System.Threading.Tasks;

  9 using System.Windows.Forms;

 10 

 11 //引入对应命名空间

 12 using NHibernate;

 13 using NHibernate.Cfg;

 14 using Test;

 15 

 16 namespace WinFormTest

 17 {

 18     public partial class Form1 : Form

 19     {

 20         ISession session = null;

 21         ISessionFactory factory = null;

 22         ITransaction trans = null;

 23 

 24         public Form1()

 25         {

 26             InitializeComponent();

 27         }

 28 

 29         /// <summary>

 30         /// 窗体加载事件

 31         /// </summary>

 32         private void Form1_Load(object sender, EventArgs e)

 33         {

 34             //读取配置文件

 35             //读取所有映射文件

 36             Configuration config = new Configuration().AddAssembly("Test");

 37             

 38             //创建Session工厂,负责持久化的连接以及OR映射

 39             factory = config.BuildSessionFactory();

 40 

 41             //创建一个可用于用户级别的操作对象。

 42             session = factory.OpenSession();

 43         }

 44 

 45         /// <summary>

 46         /// 添加事件

 47         /// </summary>

 48         private void btn_Insert_Click(object sender, EventArgs e)

 49         {

 50             //开启事务对象

 51             trans = session.BeginTransaction();

 52 

 53             try

 54             {

 55                 Person p = new Person();

 56                 p.Name = this.txt_Name.Text.Trim();

 57 

 58                 //将对象保存到数据库

 59                 //将对象P必须转换成数据库能识别的SQL语句

 60                 //由于IsessionFactory已经保存了所有的OR映射关系

 61                 //Isession能根据相对应的方言来实现SQL语句

 62                 session.Save(p);

 63 

 64                 trans.Commit();

 65 

 66                 MessageBox.Show("添加成功!", "提示");

 67             }

 68             catch (Exception)

 69             {

 70                 trans.Rollback();

 71             }

 72         }

 73 

 74         /// <summary>

 75         /// 删除事件

 76         /// </summary>

 77         private void btn_Delete_Click(object sender, EventArgs e)

 78         {

 79             //开启事务

 80             trans = session.BeginTransaction();

 81 

 82             try

 83             {

 84                 //获取要删除的对象

 85                 Person p = (Person)session.Get(typeof(Person), Convert.ToInt32(this.txt_ID.Text.Trim()));

 86 

 87                 session.Delete(p);

 88 

 89                 trans.Commit();

 90 

 91                 MessageBox.Show("删除成功!", "提示");

 92             }

 93             catch (Exception)

 94             {

 95                 trans.Rollback();

 96             }

 97         }

 98 

 99         /// <summary>

100         /// 修改事件

101         /// </summary>

102         private void btn_Update_Click(object sender, EventArgs e)

103         {

104             //开启事务对象

105             trans = session.BeginTransaction();

106 

107             try

108             {

109                 //获取要修改的对象

110                 Person p = (Person)session.Get(typeof(Person), Convert.ToInt32(this.txt_ID.Text.Trim()));

111 

112                 //更改对象的值

113                 p.Name = this.txt_Name.Text.Trim();

114 

115                 //把更改的数据,重新提交数据库,用以实现更新

116                 session.Save(p);

117 

118                 //提交事务

119                 trans.Commit();

120 

121                 MessageBox.Show("修改成功!", "提示");

122             }

123             catch (Exception)

124             {

125                 //如果出现错误,回滚事务

126                 trans.Rollback();

127             }

128         }

129 

130         /// <summary>

131         /// 查找事件

132         /// </summary>

133         private void btn_Select_Click(object sender, EventArgs e)

134         {

135             //不需要开启事务

136             Person p = (Person)session.Get(typeof(Person), Convert.ToInt32(this.txt_ID.Text.Trim()));

137 

138             this.txt_Name.Text = p.Name.ToString();

139         }

140     }

141 }



项目Demo:
使用App.config文件的:百度云,NHibernate文件夹-->NHibernateTest-App.config
使用NHibernate.cfg.xml文件的:百度云,NHibernate文件夹-->NHibernateTest- .cfg.xml

 

你可能感兴趣的:(Hibernate)