一步步学习NHibernate(2)——配置NHibernate的环境
请注明转载地址:http://www.cnblogs.com/arhat
第二章 环境搭建
在上一章中,我们知道了NHibernate是用来干什么的了,那么今天在本章中,我们开始搭建NHibernate的运行环境,在讲述NHibernate的时候,我们采用C#控制台应用程序来讲解,等到后面的时候,我们使用ASP.NET MVC和NHibernate的结合来开发项目。在以前,老魏写过一个《ASP.NET MVC NHibernate 整合》,这篇文章老魏写的有问题,有其事Nhibernate的GetCurrentSession的问题,那么老魏在讲解NHibernate的时候会专门来讲解这个只是,同时更改一下《ASP.NET MVC NHibernate 整合》的内容。
首先我们得进入到NHibernate的官方网站下载NHibernate的必要文件,地址:http://nhforge.org/大家可以自行下载。这里呢,老魏使用的是NHibernate-3.2.0,数据库使用的是MySQL。
首先我们建立一个空的解决方案“NHibernateStudy”,在解决方案中我们创建两个项目,一个是c#控制台应用程序NHibernateTest,另外一个是C#类库DAL。

在NHibernateTest中,我们添加一个应用程序配置文件App.config。顺便添加NHibernateTest对DAL的应用。我们在DAL中添加NHibernate的两个必要dll文件“Iesi.Collections.dll”,“NHibernate.dll”文件,并生成以下解决方案。
更改App.config文件,内容如下:
<configSections>
<!--声明NHibernate的配置节点-->
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
</configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<!--SessionFactory的配置-->
<session-factory>
<!--方言用的是Mysql-->
<property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
<!--是否显示sql语句-->
<property name="show_sql">true</property>
<!--使用NHibernate提供的MySql驱动-->
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<!--链接字符串-->
<property name="connection.connection_string">persistsecurityinfo=True;server=127.0.0.1;user id=root;password=symjie;database=school</property>
</session-factory>
</hibernate-configuration>
其中在这个配置文件中出现了一个非常重要的SessionFactory的配置,这个配置对应着一个对象”SessionFactory”,这个对象是会话工厂,提供一个有效的会话链接。这一点在后面的代码中,老魏讲详细的说明。
然后我们在DAL项目中,创建一个NHibernateHelper.cs文件,内容如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate.Cfg;
using NHibernate;
namespace DAL
{
public class NHibernateHelper
{
//会话工厂
public static ISessionFactory factory = null;
static NHibernateHelper()
{
//读取配置文件,根据配置文件创建一个会话工厂,而这个就是从<session-factory>节点中读取的信息
factory = new Configuration().Configure().BuildSessionFactory();
}
//定义一个打开数据库链接的方法
public static ISession OpenSession()
{
//通过工厂打开一个Session(会话)
return factory.OpenSession();
}
}
}
在这个类中,我们出现了两个接口,ISessionFactory和ISession,其中ISessionFactory是一个会话工厂,用于提供数据库链接会话的创建。ISession是表示一个数据库链接的会话,这里我们可以认为是一个数据库链接相当于ADO.NET 中的Connection,但是实际上ISession的功能比Connection要强大的多。
我们在DAL中,创建一个测试文件“Test.cs”内容如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
namespace DAL
{
public class Test
{
public void TestConnection()
{
ISession session = NHibernateHelper.OpenSession();
using (session)
{
Console.WriteLine("是否已经打开数据库链接?" + session.IsOpen);
}
Console.WriteLine("数据库是否已经关闭链接?" + session.IsOpen);
}
}
}
然后更改一下NHibernateTest项目中的Program.cs文件,在主函数中创建Test类,并调用Test类的TestConnection方法来测试一下数据库是否打开。
static void Main(string[] args)
{
DAL.Test test = new DAL.Test();
test.TestConnection();
}
运行一下程序,看看结果。

看来,我们已经成功的配置了NHibernate的测试项目,并成功的打开数据库和关闭数据库了。
一步步学习NHibernate(2)——配置NHibernate的环境的更多相关文章
- AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(三):配置ActiveXForm运行环境
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- Raspberry树莓派学习笔记2—配置RobotFramework自动化测试环境
一般RobotFramework都是安装在Windows/Linux的PC机上,这里将简单介绍在树莓派硬件平台上配置RobotFramework的开发和运行环境. 树莓派上配置了自动化测试软件,可以考 ...
- [NHibernate]基本配置与测试
目录 写在前面 nhibernate文档 搭建项目 映射文件 持久化类 辅助类 数据库设计与连接配置 测试 总结 写在前面 一年前刚来这家公司,发现项目中使用的ORM是Nhibernate,这个之前确 ...
- [NHibernate]缓存(NHibernate.Caches)
系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate ...
- centos从头学习配置web服务器环境
为了学习linux下配置web服务器环境,于是安装了vmware,准备在虚拟机里面学习web服务器的搭建! 首先是在虚拟机里安装centos,我选择的是32位的centos6.6版本,因为新版本7据说 ...
- 一步步学习NHibernate(9)——连接查询和子查询(1)
请注明转载地址:http://www.cnblogs.com/arhat 在前几章中,我们把HQL的基本查询学习了一下,但是只有基本查询很显然不能满足我们的需求,那么就需要一下复杂查询比如" ...
- 一步步学习NHibernate(1)——NHibernate介绍
请注明转载地址:http://www.cnblogs.com/arhat 第十五章 从本章开始,老魏将给大家一起学习NHibernate这个流行的ORM框架,本来老魏想要和大家一起探讨微软的EF框架的 ...
- [NHibernate]ISessionFactory配置
系列文章 [Nhibernate]体系结构 引言 在上篇文章学习了orm和nhibernate相关概念,这篇文章主要学习ISessionFactory如何配置. 因为NHibernate被设计为可以在 ...
- NHibernate 基本配置 (第一篇)
使用NHibernate最重要的一步就是配置,如果连NHibernate都还没有跑的起来,谈何学习.今天就来详解一下NHibernate的配置. 一.NHibernate基本配置 NHibernate ...
随机推荐
- jsp The requested resource (/demo10/loginBean) is not available.
The requested resource (/demo10/loginBean) is not available. <?xml version="1.0" encodi ...
- Hibernate学习笔记--------2.一多|多多的CRUD
一.一多关系 例如用户(Tb_User)和订单(Tb_Order)之间,一个用户对应了多个订单,多个订单对应一个用户. 除了基本的配置外,需要在用户类(单方)中添加订单的集合同样需要get/set方法 ...
- Redis主备自动切换
Sentinel(哨兵)是用于监控redis集群中Master状态的工具. 一.Sentinel作用 1.Master状态检测 2.如果Master异常,则会进行Master-Slave切换,将 ...
- 【高级JEE技术】JMS
ActiveMQ消息服务器. ActiveMQ是apache的一种jms标准实现,支持两种模型,点对点发送消息以及发布订阅者模型. 为了规范JMS API,JMS为消息传送定义了很多概念: JMS客户 ...
- ASP连接MYSQL数据库
<% strconnection="driver={mysql odbc 3.51 driver};database=weste_net;server=localhost;uid=ro ...
- C#学习笔记5:数据类型与进制转换
1.C#: 8种整形类型.2种用于科学计算的二进制浮点类型.1种用于金融计算的十进制浮点类型. 2.Decimal是一种特殊的浮点类型,能够存储大数字而无表示错误. 常用于货币计算.在表示的所有十进制 ...
- Ubuntu 16.04 - 64bit 访问Windows磁盘报错 he NTFS partition is in an unsafe state. Please resume and shutdown Windows fully (no hibernation ...
今天在打开某个磁盘时,突然报错,报错信息如下 原因:Windows 未正常关闭,导致系统误以为存在临时缓存文件 解决方法: http://www.linuxidc.com/Linux/2014-05/ ...
- 20160515-hibernate--事务
事务 JDBCTransaction 单个数据库(一个SesisonFactory对应一个数据库),由JDBC实现. Session session = null; Transaction tx =n ...
- ###学习《C++ Primer》- 5
点击查看Evernote原文. // @author: gr // @date: 2014-10-20 // @email: forgerui@gmail.com Part 5: 动态内存(第12章) ...
- win10 删除资源管理器中的6个文件夹
细心的朋友会发现,在Win10此电脑(计算机)中,除了我们最熟悉的磁盘外,还新增了视频.图片.文档.下载.音乐.桌面这6个文件夹.不少网友举觉得这6个文件夹其实并没什么用,想要去除删掉.那么Win10 ...