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 ...
随机推荐
- Path Sum II——LeetCode
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...
- 两个bootstrap插件bootstrap-select和bootstrap-paginator
基于bootstrap的选择器 http://silviomoreto.github.io/bootstrap-select/ <label for="androids" c ...
- 动态规划初级练习(一):ZigZag
Problem Statement A sequence of numbers is called a zig-zag sequence if the differences between ...
- 总结工作中常用到的linux命令大全_经典
常用解压命令 tar.bz2 命令: tar -jxvf *.tar.bz2 tar.z 命令: tar -zxvf *.tar.z tar.gz 命令: tar -Zxvf *.tar ...
- NSString去掉火车和空格
// backString = [backString stringByReplacingOccurrencesOfString:@"\r" withString:@&quo ...
- mongodb3.0 性能測试报告 一
mongodb3.0 性能測试报告 一 mongodb3.0 性能測试报告 二 mongodb3.0 性能測试报告 三 測试环境: 服务器:X86 pcserver 共6台 cpu: 单颗8核 ...
- Java基础知识强化之IO流笔记04:throw和throws的区别
1. throw概述 在功能方法内部出现某种问题,程序不能继续运行,需要进行跳转时,就用throw把异常对象抛出. 2. 案例演示: (1) package com.himi.throwdemo; p ...
- Hadoop32位和64位的查询
1.查看自己的hadoop版本是32位还是64位 进入: hadoop-2.6.4/lib/native 使用file命令 file libhadoop.so.1.0.0
- linux lvm的操作手册_pvcreate_vgcreate_lvcreate_相关
一. 前言 每个Linux使用者在安装Linux时都会遇到这样的困境:在为系统分区时,如何精确评估和分配各个硬盘分区的容量,因为系统管理员不但要考虑到当前某 个分区需要的容量,还要预见该分区以后可能需 ...
- HTML中属性ID和属性NAME的区别(转)
ID和Name都可以用来标识一个标记,Javascript分别有两个方法getElementById和getElementByName来定位Dom节点. 区别如下: 1.我们知道在网页做Post提交时 ...