博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NHibernate
阅读量:5063 次
发布时间:2019-06-12

本文共 5188 字,大约阅读时间需要 17 分钟。

项目结构图。

 

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

 

 

 

 

 

 

然后是App.config配置文件:

1 
2 3
4
5 6
7
8
9 10
11
12
NHibernate.Connection.DriverConnectionProvider, NHibernate
13
NHibernate.Driver.SqlClientDriver
14
Server=HUO-PC\SQLEXPRESS;initial catalog=NHibernate;Integrated Security=SSPI
15
10
16
true
17
NHibernate.Dialect.MsSql2008Dialect
18
NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu
19
20
21 22

 

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

1             //读取配置文件2             //读取所有映射文件3             Configuration config = new Configuration().AddAssembly("Test");

 

 

 

 

 

 

 

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

1             //读取配置文件2             //读取所有映射文件3             //如果使用这种方法,那么要在项目中添加 NHibernate.cfg.xml 文件4             //如果是放在项目中的文件夹中,那么前面要加上文件夹的名称,比如 @"Config/NHibernate.cfg.xml"5             Configuration config = new Configuration().Configure(@"Config/NHibernate.cfg.xml");

 

 

 

 

 

 

 

 

运行Form1窗口:

 

 

主要代码:

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         ///  30         /// 窗体加载事件 31         ///  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         ///  46         /// 添加事件 47         ///  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         ///  75         /// 删除事件 76         ///  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         /// 100         /// 修改事件101         /// 102         private void btn_Update_Click(object sender, EventArgs e)103         {104             //开启事务对象105             trans = session.BeginTransaction();106 107             try108             {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         /// 131         /// 查找事件132         /// 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

 

转载于:https://www.cnblogs.com/KTblog/p/4508458.html

你可能感兴趣的文章
MVC系列博客之排球计分(三)模型类的实现
查看>>
npm安装
查看>>
阅读笔记02
查看>>
2019年春季学期第二周作业
查看>>
2014北邮计算机考研复试上机题解(上午+下午)
查看>>
mySQL 教程 第7章 存储过程和函数
查看>>
OGG同步Oracle到Kafka(Kafka Connect Handler)
查看>>
算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)
查看>>
idea的maven项目无法引入junit
查看>>
jquery实现限制textarea输入字数
查看>>
thinkphp5 csv格式导入导出(多数据处理)
查看>>
页面置换算法-LRU(Least Recently Used)c++实现
查看>>
如何获取Android系统时间是24小时制还是12小时制
查看>>
fur168.com 改成5917电影
查看>>
PHP上传RAR压缩包并解压目录
查看>>
codeforces global round 1题解搬运
查看>>
python os模块
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
jenkins常用插件汇总
查看>>
c# 泛型+反射
查看>>