; using NHibernate.Cfg; namespace NHibernateDemo { /// /// 说明:这个类是为了演示NHibernate中的...session = GetSession(); //在NHibernate中支持直接使用参数值、":"+参数名、?...userId=query.List()[0]; session.Close(); return userId; } } } 单元测试...Mobile = "13812345678", Phone = "01012345678", RealName = "测试...void Update() { UserInfo info = instance.Read(1); info.RealName = "测试
改善性能是需要做出很多分析和测试的,本文试图从最表层的对象入手,以后逐渐增加其他方面的性能分析。希望各位看官莫要着急。 2....分析: ISession和ISessionFactory对象的产生,使用,和销毁对性能的影响。...; using NHibernate.Cfg; namespace WebApp { public sealed class NHibernateHelpe { private...const string CurrentSessionKey = “nhibernate.current_session“; private static readonly ISessionFactory...sessionFactory; static NHibernateHelper() { string cfgPath = @”E:\my project\nhibernate study\simle
首先,我们要从ISessionFactory中获取一个ISession(NHibernate的工作单元)。ISessionFactory可以创建并打开新的Session。...ISession不是线程安全的,它代表与数据库之间的一次操作。ISession通过ISessionFactory打开,在所有的工作完成后,需要关闭。...这个实例我编写了一个辅助类NHibernateHelper 用于创建ISessionFactory并配置ISessionFactory和打开一个新的Session单线程的方法,之后在每个数据操作类可以使用这个辅助类创建ISession...public class NHData { protected ISession Session { get; set; } public NHData()...new DataTable(); sda.Fill(dt); return dt.ToList(); } } 4、测试
NHibernate Contrib Best Practice 介绍 NHibernate Contrib(Burrow)是一个轻量级的开发中间件,底层使用Nhibernate 2.0GA(Nhibernate...Burrow功能 Burrow Conversation:可以很轻松的开发业务流程 GenericDAO:尽可能少接触ISession(会话和事务) Stateful...Multiple databases support: 支持多个数据库变得更容易,你不需要SessionFactoryPath ,您只需提供一个实体型Burrow,Burrow将帮你找到合适的ISession...type="NHibernate.Burrow.WebUtil.WebUtilHTTPModule,NHibernate.Burrow.WebUtil"/> 使用ISession,如果你使用Burrow.AppBlock.GenericDAO 那么就不必关心会话和事务的控制 ISession sess = new BurrowFramework().
前言 今天是NHibernate的第二篇内容,通过上一篇的内容,我们初步了解了NHibernate的创建和使用。这一篇,我继续探索NHibernate背后的秘密。嗯,就是这样。 1....ISession - NHibernate.ISession: 一个单线程、短生命周期的对象,表示从应用程序和数据持久化之间一个连接。...它们可能只是一些普通的POCO,仅仅是与ISession中关联起来了。只要ISession关闭了,这些对象就可以被分离出来然后可以在应用层的任意地方使用。...Transient Objects and Collections(临时对象和集合): 表示临时的未被ISession托管的持久化对象,它们被应用层临时创建但直到ISession关闭都不会被持久化。...实例状态 在NHibernate中,一个可持久化的对象有三种不同的状态,依据与持久化上下文之间的关系不同,其中ISession就是一个持久化上下文。
创建一个用于测试的表 这里需要创建3张表,分别用于保存:学生、课程、选课信息。可以用Sql语句来创建,也可以用其他方式创建。...mCfg.BuildSessionFactory(); (3) 使用HSql查询 string hsql=”from Student where StudentName=’kexd'”; ISession...{ Student obj=(Student)list[0]; //….. } vSession.Close(); (4) 根据主键查询 int studentID=1; ISession...vTransaction.Commit(); } catch(Exception) { vTransaction.Rollback(); } vSession.Close(); (6) 更新 ISession...} catch(Exception) { vTransaction.Rollback(); } finally { vSession.Close(); } (7) 删除ISession
return (new Configuration()).Configure().BuildSessionFactory(); } public ISession...(ISession session) { Session = session; } public void CreateCustomer...编写测试类代码如下。...然后将复制的文件,黏贴到测试的控制台程序下,然后改名为《hibernate.cfg.xml》。...最后,nhibernate-configuration-2.2这句话我想了很久要不要改成4.0。 结果是我没改,测试一切正常。可以顺利使用。
NHibernate 缓存 NHibernate 支持两种级别的缓存, 即一级缓存以及二级缓存。...一级缓存 一级缓存就是 ISession 缓存, 在 ISession 的生命周期内可用, 多个 ISession 之间不能共享缓存的对象, 通过 ISessionFactory 创建的 ISession...在 NHibernate 的参考文档中, 对 ISession 的描述如下: A single-threaded, short-lived object representing a conversation..., 两次加载同一个实体类, 该测试的输出为: First get category 1 NHibernate: SELECT category0_....二级缓存测试 二级缓存的几个测试用例如下: 1、 测试 Get 方法: [Test] public void TestGetEntity() { using (var session = this.
is not mapped”,如图3所示具体方法是:选择User.hbm.xml文件->属性->生成操作,设置这个属性的值为“嵌入的资源” 图3 5、定义NHibernateHelper的帮助类,Isession...是NHibernate的工作单元,它是一个持久化管理器,我们通过ISession来从数据库中存取数据。...; using NHibernate.Cfg; namespace NHibernateDemo.WebUI { /// /// 管理ISession对象的辅助类 ...实例 public static ISession GetCurrentSession() { ISession currentSession =... ISession session = null; //获得所有用户 public IList GetAllUsers() {
的ISession注册的类,以及数据库的交互。...SessionProvider : ISessionProvider { private readonly Lazy session; public...ISession Session { get { return session.Value; } } public SessionProvider...(ISessionFactoryProvider sessionFactoryProvider) { session = new Lazy((...; using NHibernate.Cfg; using NHibernate.Cfg.MappingSchema; using NHibernate.Dialect; using NHibernate.Driver
Nhibernate自动到项目输出中查找此文件。必须将此文件的属性设置为始终复制。...问题二:在webconfig中配置Nhibernate,不使用单独的:hibernate.cfg.xml 在webconfig中配置Nhibernate是我们另外一种配置方式。格式如下: <?...currentSession = context.Items[CurrentSessionKey] as ISession; if (currentSession == null...currentSession = context.Items[CurrentSessionKey] as ISession; if (currentSession == null...【注意文件名必须是这个】 这样实现后我们的调用代码就变得简单多了,看一下代码 ISession session = NhibernateHelper.GetCurrentSession(); //...
但使用Nhibernate的绑定时,出错,由于对NHibernate不熟悉,所以就完全不知道怎么解决。最后只能考虑结合第一个方法来创新一下。...using System; using System.Web; using NHibernate.Context; using NHibernate; using NHibernate.Cfg; namespace... GetCurrentSession() { HttpContext context = HttpContext.Current; ISession... currentSession = (ISession)context.Items[sessionKey]; if (currentSession == null) ... currentSession = (ISession)context.Items[sessionKey]; if (currentSession == null)
NHibernate 批量数据插入测试 .Net 环境下测试 数据库环境以及 NHibernate 配置 SQL Server 环境为 VS2013 自带的 localdb v11.0, 对应的 NHibernate...没有提供针对 MySQL 的 BatchingBatcherFactory , 针对 MySQL 的测试加载了第三方的 NHibernate.MySQLBatcher 测试代码 插入数据的测试代码如下...开发环境测试结果 运行单元测试的结果如下图所示: ? 从上图单元测试运行时间看, 在同一台机器上, SqlServer 的性能大概是 MariaDB 5~6 倍。...生产环境测试结果 将测试数据库分别部署在 SQL Server 2012 和 MariaDB 内网的服务器上, 服务器硬件配置几乎一致, 数据库版本也与开发环境 一致, 反复运行测试, 结果大致如下:...在 Ubuntu Server 环境下测试结果如下: ?
一级缓存 一级缓存就是 ISession 缓存, 在 ISession 的生命周期内可用, 多个 ISession 之间不能共享缓存的对象, 通过 ISessionFactory 创建的 ISession...在 NHibernate 的参考文档中, 对 ISession 的描述如下: A single-threaded, short-lived object representing a conversation..., 两次加载同一个实体类, 该测试的输出为: First get category 1 NHibernate: SELECT category0_....NHibernate.Caches.SharedCache NHibernate.Caches.SysCache NHibernate.Caches.SysCache2 NHibernate.Caches.Velocity...二级缓存测试 二级缓存的几个测试用例如下: 1、 测试 Get 方法: [Test] public void TestGetEntity() { using (var session = this
前言 上一篇《C# 数据操作系列 - 11 NHibernate 配置和结构介绍》 介绍了Nhibernate里的配置内容。这一篇将带领大家了解一下如何使用NHIbernate。...首先,创建一个泛型模板类,并约束泛型为类: public class Repository where T: class { } 添加一个ISession属性,用来后续访问操作,并由构造方法赋值...: public Repository(ISession session){ Session = session; } public ISession Session { get; } 2.1...2.2 修改 NHibernate的修改与EF类似,也是由ISession监控了修改,不用做过多的操作。...2.3 删除 NHibernate的删除也十分简单,直接通知ISession删除某个持久化对象。
转载:http://www.cnblogs.com/tenghoo/archive/2011/02/14/1954393.html NHibernate专题:http://kb.cnblogs.com/...zt/nhibernate/ NHibernate官方站点:http://nhforge.org/ NHibernate参考文档:http://nhforge.org/doc/nh/en/ 获取NHibernate...地址:http://sourceforge.net/projects/nhibernate/ public IList GetUserOrderByUserID(string userid..., int PageIndex, int PageSize, out long count) { using (ISession _session = base.GetSession...分页的测试 http://www.cnblogs.com/chenyt/archive/2010/12/04/nhibernate.html
,废话不说了,下面就介绍Fluent NHibernate,大家也一起来体验一下Fluent Nhibernate的快感吧。...4、灵活的Fluent 一、初识Fluent NHibernate(简称Fluent) Fluent NHibernate offers an alternative to NHibernate's...在NHibernate中,ISession是操作数据的核心,我们需要通过SessionFactory来建造ISession来进行数据的交互。...因为Fluent是基于NHibernate的,它只实现了NHibernate的Mapping功能,其他功能还不能代替,所以我们的项目中要同时引入NHibernate和FluentNHibernate两个类库...两种方式的创建写好了,因为是测试,所以写的比较乱,下面我们写一个测试代码,只需要测试一个方法即可。
今天说一说Nhibernate_nhibernate与ef区别,希望能够帮助大家进步!!! 什么是NHibernate?...> <class name="<em>NHibernate</em>.Demo.QuickStart.User...<em>ISession</em>对象代表着一个到后端数据库连接,ITransaction代表一个<em>NHibernate</em>管理的事务(Transaction)....ISessionFactory factory = cfg.BuildSessionFactory(); <em>ISession</em> session = factory.OpenSession(); ITransaction...object should be saved session.Save(newUser); // commit all of the changes to the DB and close the <em>ISession</em>
NHibernate使用的核心组件。...图1 添加对NHibernate的引用 3....} return _sessionFactory; } } public static ISession...where T : new() { long id = 0; try { using (ISession...TReturn returnValue = default(TReturn); try { using (ISession
领取专属 10元无门槛券
手把手带您无忧上云