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

 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. vue环境的搭建与第一个demo

    参考两个博客 1 2 git.npm和淘宝镜像的安装过程过程省略了,直接开始webpack + vue-cli + 创建demo 首先,在磁盘创建一个文件夹,命名为vue-projects,里面再建一 ...

  2. 如何去掉wordpress网站url里面的index.php(Apache服务器)

    在wordpress根目录新建.htaccess文件,并拷贝以下代码保存即可. <IfModule mod_rewrite.c> RewriteEngine On RewriteBase ...

  3. 微言netty:不在浮沙筑高台

    1. 写作缘起 几年前,我在一家农业物联网公司,负责解决其物联网产品线.我们当时基于.net平台打造了一套实时数据采集系统,可以把数以百万级的传感器传送回来的数据采集入库并根据这些数据进行建模.在搭建 ...

  4. P3455 [POI2007]ZAP-Queries(莫比乌斯反演)

    题目 P3455 [POI2007]ZAP-Queries 解析 莫比乌斯反演. 给定\(n\),\(m\),\(d\),求\[\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j ...

  5. [拓展Bsgs] Clever - Y

    题目链接 Clever - Y 题意 有同余方程 \(X^Y \equiv K\ (mod\ Z)\),给定\(X\),\(Z\),\(K\),求\(Y\). 解法 如题,是拓展 \(Bsgs\) 板 ...

  6. python 学习地址

    本章主要记录学习python过程中借鉴的一些网站,并感谢这些博主辛勤付出. python官网:https://www.python.org/ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...

  7. Python 之ConfigParser模块

    一.ConfigParser简介 ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号“[ ]”内包含的为section.section 下面为类似于key-value 的配置 ...

  8. Hbase 元数据一致性检查(转)

    最近在学习HBase先关的知识,顺便做一下笔记,以加深知识的了解和掌握. Hbase常用工具 文件检测修复工具 hbase hbck -help 常用选项: -details 显示所有region检查 ...

  9. 1.5分布式通讯框架-RMI

    分布式通信框架-RMI讲解 什么是RPC Remote procedure call protocal RPC协议其实是一个规范.常用PRC框架:Dubbo.Thrif.RMI.Webservice. ...

  10. Hadoop记录-hadoop jmx配置

    1.hadoop-env.sh添加export HADOOP_JMX_OPTS="-Dcom.sun.management.jmxremote.authenticate=false -Dco ...