本文关于NHibernate的Demo和效率测试,希望对大家有用.

1.先去官网下载Nhibernate

2.放入到项目中并建立Helper类

  1. private static ISession _Session = null;
  2.  
  3. public static ISession Session
  4. {
  5. get
  6. {
  7. if (_Session == null)
  8. {
  9.  
  10. Configuration cfg = new Configuration();
  11.  
  12. // _Session session factory from configuration object
  13. _Session = cfg.Configure(CurrentLocation + "Nhibernate.config").BuildSessionFactory().OpenSession();
  14. }
  15.  
  16. return _Session;
  17. }
  18. }

写操作方法

更新

  1. public static string SaveOrUpdate<T>(T item)
  2. {
  3. Helper.Session.Clear();
  4. string msg = string.Empty;
  5. try
  6. {
  7. using (Helper.Session.BeginTransaction())
  8. {
  9. Helper.Session.SaveOrUpdate(item);
  10. Helper.Session.Transaction.Commit();
  11. }
  12. }
  13. catch (Exception ex)
  14. {
  15. throw ex;
  16. }
  17.  
  18. return msg;
  19. }
  1. public static string Save<T>(T item)
  2. {
  3. Helper.Session.Clear();
  4. string msg = string.Empty;
  5. try
  6. {
  7. using (Helper.Session.BeginTransaction())
  8. {
  9. Helper.Session.Save(item);
  10. Helper.Session.Transaction.Commit();
  11. }
  12. }
  13. catch (Exception ex)
  14. {
  15. throw ex;
  16. }
  17.  
  18. return msg;
  19. }
  1. public static string Update<T>(T item)
  2. {
  3. Helper.Session.Clear();
  4. string msg = string.Empty;
  5. try
  6. {
  7. using (Helper.Session.BeginTransaction())
  8. {
  9. Helper.Session.Update(item);
  10. Helper.Session.Transaction.Commit();
  11. }
  12. }
  13. catch (Exception ex)
  14. {
  15. throw ex;
  16. }
  17.  
  18. return msg;
  19. }
  1. public static string Delete<T>(T item)
  2. {
  3. Helper.Session.Clear();
  4. string msg = string.Empty;
  5. try
  6. {
  7. using (Helper.Session.BeginTransaction())
  8. {
  9. Helper.Session.Delete(item);
  10. Helper.Session.Transaction.Commit();
  11. }
  12. }
  13. catch (Exception ex)
  14. {
  15. throw ex;
  16. }
  17.  
  18. return msg;
  19. }
  1. public static string Delete<T>(List<T> itemsToDelete)
  2. {
  3. Helper.Session.Clear();
  4. string msg = string.Empty;
  5. try
  6. {
  7. using (Helper.Session.BeginTransaction())
  8. {
  9. foreach (T item in itemsToDelete)
  10. {
  11. Helper.Session.Delete(item);
  12. }
  13. Helper.Session.Transaction.Commit();
  14. }
  15. }
  16. catch (Exception ex)
  17. {
  18. throw ex;
  19. }
  20.  
  21. return msg;
  22. }

Delete

  1. public static IList<T> GetEntityList<T>(IList<ICriterion> whereCondition)
  2. {
  3. return GetEntityList<T>(whereCondition, null);
  4. }

获取数据实体列表

  1. public static IList<T> GetEntityList<T>(IList<ICriterion> whereCondition,IList<string> orderColumnList)
  2. {
  3. Helper.Session.Clear();
  4. ICriteria criteria = Session.CreateCriteria(typeof(T));
  5.  
  6. if (whereCondition != null && whereCondition.Count > )
  7. {
  8. foreach (ICriterion cri in whereCondition)
  9. {
  10. criteria.Add(cri);
  11. }
  12. }
  13.  
  14. if (orderColumnList != null && orderColumnList.Count > )
  15. {
  16. foreach (string orderColumn in orderColumnList)
  17. {
  18. criteria.AddOrder(Order.Asc(orderColumn));
  19. }
  20. }
  21.  
  22. return criteria.List<T>();
  23. }

获取数据实体列表

  1. public static void ExecuteProcedure(string procedureName, List<ProcedureParameter> lstParameters)
  2. {
  3. Helper.Session.Clear();
  4. try
  5. {
  6. var cmd = Session.Connection.CreateCommand();
  7.  
  8. cmd.CommandText = procedureName;
  9. cmd.CommandType = CommandType.StoredProcedure;
  10. foreach (var para in lstParameters)
  11. {
  12. var iPara = cmd.CreateParameter();
  13. iPara.ParameterName = para.ParameterName;
  14. iPara.Value = para.Value;
  15. iPara.Direction = para.Direction;
  16. iPara.DbType = para.DataType;
  17. if (para.Size != )
  18. {
  19. iPara.Size = para.Size;
  20. }
  21. cmd.Parameters.Add(iPara);
  22. }
  23. cmd.ExecuteNonQuery();
  24.  
  25. foreach (var p in lstParameters)
  26. {
  27. if (p.Direction == ParameterDirection.Output)
  28. {
  29. p.Value = ((System.Data.Common.DbParameter)cmd.Parameters[p.ParameterName]).Value;
  30. }
  31. }
  32. }
  33. catch(Exception ex)
  34. {
  35. throw ex;
  36. }
  37. }

执行存储过程

3.建立单元测试项目

最后,我知道没有代码你们是不会来的,so,如下 :

https://github.com/wujianfei01/NHibernate-Demo/

Ps:请用VS2013及以后版本打开

NHibernate Demo 和 效率测试的更多相关文章

  1. ORM for Net主流框架汇总与效率测试

    框架已经被越来越多的人所关注与使用了,今天我们就来研究一下net方面的几个主流ORM框架,以及它们的效率测试(可能会有遗漏欢迎大家讨论). ORM框架:Object/Relation Mapping( ...

  2. 关于 pgsql 数据库json几个函数用法的效率测试

    关于 pgsql 数据库json几个函数用法的效率测试 关于pgsql 几个操作符的效率测试比较1. json::->> 和 ->> 测试方法:单次运行100次,运行10个单次 ...

  3. Python_线程、线程效率测试、数据隔离测试、主线程和子线程

    0.进程中的概念 三状态:就绪.运行.阻塞 就绪(Ready):当进程已分配到除CPU以外的所有必要资源,只要获得处理机便可立即执行,这时的进程状态成为就绪状态. 执行/运行(Running)状态:当 ...

  4. 进程池原理及效率测试Pool

    为什么会有进程池的概念? 当我们开启50个进程让他们都将100这个数减1次减到50,你会发现特别慢! 效率问题,原因: 1,开辟内存空间.因为每开启一个进程,都会开启一个属于这个进程池的内存空间,因为 ...

  5. postgresql-int,bigint,numeric效率测试

    在postgresql9.5的时候做过一个测试就是sum()的效率最终的测试结果是sum(int)>sum(numeric)>sum(bigint)当时比较诧异为啥sum(bigint)效 ...

  6. 纯PHP Codeigniter(CI) ThinkPHP效率测试

    最近一直想做一个技术类的新闻站点,想做的执行效率高些,想用PHP做,一直纠结于用纯PHP做还是用CI或者THINKPHP.用纯PHP效率高,缺点 n多,比如安全方面.构架方面等等等等:用CI.thin ...

  7. Python--day39--进程池原理及效率测试

    #为什么要有进程池的概念 #效率 #每次开启进程都要创建一个属于这个进程的内存空间 #寄存器 堆栈 文件 #进程过多 操作系统调度进程 # #进程池 #python中的 先创建一个属于进程的池子 #这 ...

  8. 关于pgsql 几个操作符的效率测试比较

    关于pgsql 几个操作符的效率测试比较1. json::->> 和 ->> 测试方法:单次运行100次,运行10个单次取平均时间.测试结果:->> 效率高 5% ...

  9. [NHibernate]基本配置与测试

    目录 写在前面 nhibernate文档 搭建项目 映射文件 持久化类 辅助类 数据库设计与连接配置 测试 总结 写在前面 一年前刚来这家公司,发现项目中使用的ORM是Nhibernate,这个之前确 ...

随机推荐

  1. Html 之div+css布局之css选择器

    CSS选择器 什么叫选择器?通俗的来说就是 我想改变html 中某个地方的  字体大小 或者背景色 或者其它属性 内边距 外边距,宽度高度 等等 一些Css 样式. 那么我们如何找到对应的 元素呢? ...

  2. java mail使用qq邮箱发邮件的配置方法

    最近自己折腾了下Java中利用mai发送QQ邮件 1.QQ邮箱设置 1.1 进去QQ邮箱-->设置-->账号-->进行设置如下图 2.foxmail设置(由于我要利用它收邮件) 2. ...

  3. Apache2 同源策略解决方案 - 配置 CORS

    什么是同源策略 现在的浏览器大多配有同源策略(Same-Origin Policy),具体表现如下: 浏览某一网站,例如 http://www.decembercafe.org/.这个网页中的 Aja ...

  4. tomcat取带有中文的参数乱码的解决办法

    1. 对于post参数,可以用filter来处理,在dofilter之前,加入以下代码: request.setCharacterEncoding("UTF-8"); 2. 对于g ...

  5. C#中as用法

    在程序中,进行类型转换时常见的事,C#支持基本的强制类型转换方法,例如 Object obj1 = new NewType();NewType newValue = (NewType)obj1;这样强 ...

  6. js 实现进度条功能。

    /** * 纯js进度条 * Created by kiner on 15/3/22. */ function progress(options){ this.w = (options &&a ...

  7. 详解SVN 的使用

    一.什么是SVN SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS. 二.SVN的下载安装 下载地址:http ...

  8. 使用Quartz.net动态设置定时时间问题

    关于使用Quartz.net就不用解释了.. 应客户需求问题..需要将做一个界面设置定时的时间.因此我在百度一番..用CronExpression类可以设置时间... 我知道这个类有定义好的字段..不 ...

  9. jsp中target="_blank"的用法

    对于点击查询按钮或a标签等,打开一个新页面并显示结果的做法如下: 1.form表单: 在form标签上加target="_blank"后,点击搜索按钮,显示查询结果时会打开一个新页 ...

  10. 深入剖析ConcurrentHashMap(2)

    转载自并发编程网 – ifeve.com本文链接地址: 深入剖析ConcurrentHashMap(2) 经过之前的铺垫,现在可以进入正题了.我们关注的操作有:get,put,remove 这3个操作 ...