在第一篇中该做的配置基本上已经全部完成,现在直接开始测试

 public static ISession NhibClient()
{
try
{
// Nhibernate 配置文件的位置
var path=AppDomain.CurrentDomain.BaseDirectory + "../../xml/NHibernate.cfg.xml";
ISessionFactory sf = new Configuration().Configure(path).BuildSessionFactory();
ISession session = sf.OpenSession();//打开Session
return session;
}
catch (Exception)
{
return null;
} }

数据表实体

    public class UserModel
{
public virtual int Id { get; set; }
public virtual string UserName { get; set; }
public virtual int Age { get; set; } }
                var client = NhibInfo.NhibClient();
UserModel myUser = new UserModel { Id = , UserName = "dong", Age = };
client.Update(myUser);
client.Flush();
Console.WriteLine("执行完成!");
//查询 注意:from table 时,table不能是数据中表的名字,必须是数据库实体的名字
                var list = client.CreateQuery("from UserModel where UserName='shanghai';").List<UserModel>();

二:client.Flush();的作用

1. ession flush在commit之前默认都会执行他。也可以手动执行它,他主要做了两件事

1) 清理缓存。

2) 执行SQL。

session在什么情况下执行flush

* 默认在事务提交时

* 显示的调用flush

* 在执行查询前,如:iterate

2.在下面的情况下,Hibernate会调用Session.flush()以清理缓存:    
1)事务提交时如果flush模式不为FlushMode.NEVER,commit()将调用flush().    
2)在某些查询语句之前(此查询语句之前的语句已经改变了数据库状态,所以需要调用flush()以同步数据库是查出来的数据是经过更改的)。在调用Session.flush()时,涉及的SQL语句会按照下面的顺序执行。

3.在调用Session.flush()时,涉及的SQL语句会按照下面的顺序执行。
(1所有的实体进行插入的语句,其顺序按照对象执行Session.save()的时间顺序。
(2)所有对实体进行更新的语句
(3)所有进行集合的删除语句
(4)所有对集合元素进行删除,更新或者插入的语句
(5)所有进行集合插入的语句
(6)所有对实体进行删除的语句,其顺序按照对象执行Session.delete()的时间顺序。

(7)有一个例外是,如果对象使用native方式生成的ID(持久化标识),则他们一执行save就会被插入。除非明确地指定了flush()命令,否则关于Session何时会执行这些JDBC调用完全是无法保证的,只能保证他们执行的前后顺序。

参考来源:http://blog.csdn.net/dingxingmei/article/details/9022597

Nhibernate 使用 (二)的更多相关文章

  1. NHibernate初学二之简单执行SQL及HQL、Linq

    上篇文章简单介绍NHibernate之简单增删改查,本文将会简单介绍有关执行NHibernate的SQL.HQL及存储过程: 一:执行SQL语句实例,运用CreateSQLQuery方法 public ...

  2. 跟我学 NHibernate (二)

    1. 在 NHibernate 中使用事务, 主要代码如下: #region 事务 public IList<Customer> GetAll() { // 开启事物 using (ITr ...

  3. NHibernate系列学习(二)-使用sql和hql以及linq

    1.本文主要介绍了NH的三种查询方式 2.界面查看 3.代码架构 4.代码详情 namespace KimismeDemo { public partial class Form2 : Form { ...

  4. ORM武器:NHibernate(三)五个步骤+简单对象CRUD+HQL

    前面的两篇文章中.我们对NHibernate已经做了大致了解 <ORM利器:NHibernate(一)简单介绍>Nhibernate的作用:攻克了对象和数据库的转化问题 <ORM利器 ...

  5. NHibernate利用Mindscape.NHibernateModelDesigner实现数据库与实体之间的转换及操作

    环境: &nbsp&nbspVisual Studio 2010 一.Mindscape.NhibernateModelDesigner安装 &nbsp&nbsp在打开 ...

  6. 细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一

    细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一(转) ADO.NET Entity Framework        ADO.NET Entity Framework 是微软以 ADO.N ...

  7. [Nhibernate]SchemaExport工具的使用(二)——创建表及其约束、存储过程、视图

    目录 写在前面 文档与系列文章 表及其约束 存储过程 视图 总结 写在前面 由于一直在山西出差,有几天没更新博客了.昨晚回到家,将博客园最近三天更新的文章搜集了一下,花费了半天的时间,看了看,有些文章 ...

  8. [Nhibernate]二级缓存(二)

    目录 写在前面 文档与系列文章 更新数据 二级缓存管理 总结 写在前面 本篇文章也算nhibernate入门系列的结尾了,在总结nhibernate系列的过程中,遇到了很多问题,学习的过程也是解决bu ...

  9. Nhibernate初入门基本配置(二)

    转载地址http://www.cnblogs.com/kissdodog/p/3306428.html 使用NHibernate最重要的一步就是配置,如果连NHibernate都还没有跑的起来,谈何学 ...

随机推荐

  1. SpringMVC学习手册(一)------工作原理解析

    1.什么是MVC模式 图解:   2.SpringMVC原理图解:       springMVC中的几个组件: 前端控制器(DispatcherServlet):接收请求,响应结果,相当于电脑的CP ...

  2. php如何解决中文乱码问题?

    为什么会出现中文乱码? 很多新手朋友学习PHP的时候,发现程序中的中文在输出的时候会出现乱码的问题,那么为什么会出现这种乱码的情况呢?一般来说,乱码的出现有2种原因,一种是由于编码(charset) ...

  3. EasyTouch5ForSiki学院

    总结: 这里面的一些功能,就可以拿来做移动或者PC的很多功能了,这是一个很有用的插件. 禁用0618错误 EasyTouch4_x的写法: using HedgehogTeam.EasyTouch; ...

  4. 作业二:Git的安装与使用

    作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 分布式版本控制系统Git的安装与使用 1.下载安装配置用户名 ...

  5. Yii2.0 安装使用报错:yii\web\Request::cookieValidationKey must be configured with a secret key.

    下载了Yii2.0的basic版,配置好apache之后,浏览器访问,出现如下错误: Invalid Configuration – yii\base\InvalidConfigException y ...

  6. 从浅入深详解独立ip网站域名恶意解析的解决方案

    立IP空间的好处想必大家都能耳熟闻详,稳定性强,利于seo等让大家选择了鼎峰网络香港独立IP空间.那么, 网站独享服务器IP地址,独立IP空间利于百度收录和权重的积累.不受牵连.稳定性强等诸多优势为一 ...

  7. Linux中的pipe(管道)与named pipe(FIFO 命名管道)

    catalogue . pipe匿名管道 . named pipe(FIFO)有名管道 1. pipe匿名管道 管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常 ...

  8. 统计iis日志第一例的次数

    统计iis日志第一例(日期)出现的次数 IIS日志文件格式: #Software: Microsoft Internet Information Services 7.5 #Version: 1.0 ...

  9. 第七节: EF的三种事务的应用场景和各自注意的问题(SaveChanges、DBContextTransaction、TransactionScope)

    一. 什么是事务 我们通俗的理解事务就是一系列操作要么全部成功.要么全部失败(不可能存在部分成功,部分失败的情况). 举一个事务在我们日常生活中的经典例子:两张银行卡(甲.乙),甲向乙转钱,整个过程需 ...

  10. mysql 以数组的形式插入更新表

    在项目中用php+mysql,需要插入数据,但是数据库表字段又很长,如果用常规的insert into table (c) values ('dd')的话,将是很长的sql语句,而且一不小心,就弄错了 ...