mvc4 整合nhibernate3.0配置
鉴于大家都在解决问题或是学习新东西的时候,并不关注是谁又是谁帮你解决了问题,所有这里为自己做下宣传,我为自己代言。

首先介绍下我的开发环境是vs2010旗舰版,nhibernate采用的是3.0版本。
一、在mvc4项目中装载配置nhibernate的第一种方式是采用【hibernate.xml】的方式:首先看图

使用这种方式配置nhibernate的话,需要将hibernate.xml【属性】改为始终复制到输入目录或作为嵌入资源使用。

当然要使用nhibernate的化,需要在项目中引入hibernate.dll.

接下来我们来看下,在代码中如何来装载我们对nhibernate的配置:
public class NhibernateHelper
{
private ISessionFactory _sessionFactory;
private static ISession _session = null;
public NhibernateHelper()
{
_sessionFactory = GetSessionFactory();
}
public ISessionFactory GetSessionFactory()
{
//加载文件的方式
Configuration cfg = new Configuration().Configure(AppDomain.CurrentDomain.BaseDirectory+"/hibernate.cfg.xml");
//Configuration cfg = new Configuration();
//cfg.AddAssembly(Assembly.GetExecutingAssembly()); HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();//NHProf工具 cfg.AddAssembly("BusinessDemo");//BusinessDemo指的是包含数据表的dll类库如:user.hbm.xml //cfg.AddAssembly(typeof(User).Assembly);
//cfg.AddAssembly(typeof(Order).Assembly);
return cfg.BuildSessionFactory();
}
public ISession GetSession()
{
if (_session != null && _session.IsOpen)
return _session;
else
{
_session = _sessionFactory.OpenSession();
return _session;
}
}
}
然后我们在mvc4 Controller里边就可以这样来做下测试:
public class CustomerController : Controller{
public ISession session { get { return new NhibernateHelper().GetSession(); } }
public ActionResult Index()
{
Customer customer = this.session.Load<Customer>();
var result = new Result();
using (ITransaction tx = this.session.BeginTransaction())
{
try
{
this.session.Delete(customer);
this.session.Flush();
tx.Commit();
result.success = true;
result.msg = "删除成功!";
}
catch (HibernateException)
{
tx.Rollback();
result.success = true;
result.msg = "删除失败!";
}
}
return Json(result, JsonRequestBehavior.AllowGet);
}
}
二、接下来我们来看如何在么mvc项目中如何在web.config中配置nhibernate信息:直接上代码
<configSections>
<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" requirePermission="false"/>
</configSections>
<connectionStrings>
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider, NHibernate</property>
<property name="connection.connection_string">Database=test;Data Source=localhost;User Id=root;Password=root</property>
<property name="dialect">NHibernate.Dialect.MySQL5Dialect</property>
<property name="connection.driver_class">NHibernate.Driver.MySqlDataDriver</property>
<property name="proxyfactory.factory_class">NHibernate.Bytecode.DefaultProxyFactoryFactory,NHibernate</property>
</session-factory>
</hibernate-configuration>
注: <property name="dialect"> 、<property name="connection.driver_class">这两个属性一定要和链接的数据库保持一致,这里边我采用的是mysql数据库。
然后我们直接来看如何来装载它:
public class NhibernateHelper
{
private ISessionFactory _sessionFactory;
private static ISession _session = null;
public NhibernateHelper()
{
_sessionFactory = GetSessionFactory();
}
public ISessionFactory GetSessionFactory()
{
//加载文件的方式
//Configuration cfg = new Configuration().Configure(AppDomain.CurrentDomain.BaseDirectory+"/hibernate.cfg.xml");
Configuration cfg = new Configuration();
cfg.AddAssembly(Assembly.GetExecutingAssembly()); HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();//NHProf工具 //cfg.AddAssembly("BusinessDemo"); //cfg.AddAssembly(typeof(User).Assembly);
//cfg.AddAssembly(typeof(Order).Assembly);
return cfg.BuildSessionFactory();
}
public ISession GetSession()
{
if (_session != null && _session.IsOpen)
return _session;
else
{
_session = _sessionFactory.OpenSession();
return _session;
}
}
}
mvc4 整合nhibernate3.0配置的更多相关文章
- Maven整合Spring3.0+Mybatis3.2+Struts2.3+查找坐标+jar包依赖(五)
依赖传递 只添加了一个struts2-core依赖,发现项目中出现了很多jar,这种情况 叫 依赖传递
- QQ登录整合/oauth2.0认证-03-对第二节的代码改进
---------------------------目录---------------------------------- QQ登录整合/oauth2.0认证-01-申请appkey和appid ...
- [CXF REST标准实战系列] 二、Spring4.0 整合 CXF3.0,实现测试接口(转)
转自:[CXF REST标准实战系列] 二.Spring4.0 整合 CXF3.0,实现测试接口 文章Points: 1.介绍RESTful架构风格 2.Spring配置CXF 3.三层初设计,实现W ...
- Struts2(五.用户注册的实现及整合Action的配置方法)
一.用户注册功能 register.jsp页面 若是jquery ajax方式提交给action,还要回到jquery,控制权在jquery若是表单方式提交给action,控制权交给action &l ...
- Nginx缩略图和Fastdfs整合以及image_filter配置,7点经验结论和5个参考资料
以下是7点经验结论和5个参考资料 1.Nginx单独配置缩略图与Nginx和Fastdfs模块整合,配置是不一样的. 非整合模式的配置,类似这样的: location ~* /(\d+)\.(jpg ...
- SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂)
SpringBoot第十一集:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂) 一,整合Swagger3.0 随着Spring Boot.Spring Cloud等微服务的 ...
- Swagger整合Jwt授权配置
Swagger整合Jwt授权配置 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章http://www.javaman.cn/sb2/swagger-jwt 一.Swagger入门 ...
- IIS运行.NET4.0配置
IIS运行.NET4.0配置 “/CRM”应用程序中的服务器错误.配置错误说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件. 分析器错误消息: 无法 ...
- kafka0.9.0及0.10.0配置属性
问题导读1.borker包含哪些属性?2.Producer包含哪些属性?3.Consumer如何配置?borker(0.9.0及0.10.0)配置Kafka日志本身是由多个日志段组成(log segm ...
随机推荐
- Linux网卡驱动架构分析
一.网卡驱动架构 由上到下层次依次为:应用程序→系统调用接口→协议无关接口→网络协议栈→设备无关接口→设备驱动. 二.重要数据结构 1.Linux内核中每一个网卡由一个net_device结构来描述. ...
- 海美迪Q5智能机顶盒的蓝牙功能
虽然在硬件上,海美迪Q5智能机顶盒没有集成蓝牙模块,但是在软件系统上,Q5是支持蓝牙驱动的,所以它可以通过USB外接蓝牙适配器来扩展出蓝牙功能,简单来说,就是你另外买个蓝牙适配器,插到Q5上面,就能用 ...
- I - Tunnel Warfare - hdu 1540(区间合并更新)
题意:在抗日战争期间,地道战在华北平原得到广泛的实施,一般而言,村庄通过一些隧道在一条线上连接,除了两端剩下的每个村庄都有两个相连. 侵略者会频繁的对这些村庄进行扫荡,并且摧他们的地道,当然八路军会把 ...
- xshell中启动linux图形界面
使用root用户执行xhost + IP为客户端机器IP,使用远程登录用户执行 DISPLAY=IP:0.0;export DISPLAY; 使用远程登录的用户执行: xhost +
- Flas-SQLAchemy数据库操作使用学习笔记
Flas-SQLAchemy数据库操作使用学习笔记 Flask-SQLALchemy 是一个给你的应用添加 SQLALchemy 支持的 Flask 扩展.SQLALchemy 是Python语言的S ...
- jquery 随机数
var jschars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', ...
- Fastjson Feathure
转载于:http://code.alibabatech.com/wiki/display/FastJSON/Serial+Features Fastjson序列化时,可以指定序列化的特性,以满足不同的 ...
- Android Monkey具体解释
Monkey是一个执行在Android设备或者虚拟机上的程序,它能随机模拟一系列用户的操作.点击,滑动,能够用它来做压力測试. 在Monkey执行的过程中,它会产生并发送一系列的事件给系统,而且监听系 ...
- ios开发应用内实现多语言自由切换
需求描述:应用内部有一按钮,点击切换语言(如中英文切换).说起来这个是好久以前做的一个功能点了,刚开始也是没有头绪,后来解决了发现很简单,把方法分享一下.1.原理.查看NSLocalizedStrin ...
- Linux应用程序打包
原文地址:http://blog.solrex.cn/articles/packaging-1-src.html1. 应用程序打包技术之一(源代码篇) 相信很多朋友都曾经为方便做某件事写过自己的小 ...