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

1.先去官网下载Nhibernate

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

  private static ISession _Session = null;

         public static ISession Session
{
get
{
if (_Session == null)
{ Configuration cfg = new Configuration(); // _Session session factory from configuration object
_Session = cfg.Configure(CurrentLocation + "Nhibernate.config").BuildSessionFactory().OpenSession();
} return _Session;
}
}

写操作方法

更新

 public static string SaveOrUpdate<T>(T item)
{
Helper.Session.Clear();
string msg = string.Empty;
try
{
using (Helper.Session.BeginTransaction())
{
Helper.Session.SaveOrUpdate(item);
Helper.Session.Transaction.Commit();
}
}
catch (Exception ex)
{
throw ex;
} return msg;
}
 public static string Save<T>(T item)
{
Helper.Session.Clear();
string msg = string.Empty;
try
{
using (Helper.Session.BeginTransaction())
{
Helper.Session.Save(item);
Helper.Session.Transaction.Commit();
}
}
catch (Exception ex)
{
throw ex;
} return msg;
}
 public static string Update<T>(T item)
{
Helper.Session.Clear();
string msg = string.Empty;
try
{
using (Helper.Session.BeginTransaction())
{
Helper.Session.Update(item);
Helper.Session.Transaction.Commit();
}
}
catch (Exception ex)
{
throw ex;
} return msg;
}
 public static string Delete<T>(T item)
{
Helper.Session.Clear();
string msg = string.Empty;
try
{
using (Helper.Session.BeginTransaction())
{
Helper.Session.Delete(item);
Helper.Session.Transaction.Commit();
}
}
catch (Exception ex)
{
throw ex;
} return msg;
}
 public static string Delete<T>(List<T> itemsToDelete)
{
Helper.Session.Clear();
string msg = string.Empty;
try
{
using (Helper.Session.BeginTransaction())
{
foreach (T item in itemsToDelete)
{
Helper.Session.Delete(item);
}
Helper.Session.Transaction.Commit();
}
}
catch (Exception ex)
{
throw ex;
} return msg;
}

Delete

 public static IList<T> GetEntityList<T>(IList<ICriterion> whereCondition)
{
return GetEntityList<T>(whereCondition, null);
}

获取数据实体列表

 public static IList<T> GetEntityList<T>(IList<ICriterion> whereCondition,IList<string> orderColumnList)
{
Helper.Session.Clear();
ICriteria criteria = Session.CreateCriteria(typeof(T)); if (whereCondition != null && whereCondition.Count > )
{
foreach (ICriterion cri in whereCondition)
{
criteria.Add(cri);
}
} if (orderColumnList != null && orderColumnList.Count > )
{
foreach (string orderColumn in orderColumnList)
{
criteria.AddOrder(Order.Asc(orderColumn));
}
} return criteria.List<T>();
}

获取数据实体列表

 public static void ExecuteProcedure(string procedureName, List<ProcedureParameter> lstParameters)
{
Helper.Session.Clear();
try
{
var cmd = Session.Connection.CreateCommand(); cmd.CommandText = procedureName;
cmd.CommandType = CommandType.StoredProcedure;
foreach (var para in lstParameters)
{
var iPara = cmd.CreateParameter();
iPara.ParameterName = para.ParameterName;
iPara.Value = para.Value;
iPara.Direction = para.Direction;
iPara.DbType = para.DataType;
if (para.Size != )
{
iPara.Size = para.Size;
}
cmd.Parameters.Add(iPara);
}
cmd.ExecuteNonQuery(); foreach (var p in lstParameters)
{
if (p.Direction == ParameterDirection.Output)
{
p.Value = ((System.Data.Common.DbParameter)cmd.Parameters[p.ParameterName]).Value;
}
}
}
catch(Exception ex)
{
throw ex;
}
}

执行存储过程

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. LayaAir引擎——(八)

    var a = new Array(); var b = new Array(); var ksjmCursor = 0; function ksjminit() { ksjminitName(); ...

  2. Android中通过注解代替findViewById方法

    转自:http://www.2cto.com/kf/201405/302998.html 这篇文章主要讲解注解实现findViewById的功能,首先我们来熟悉一下在java中怎么定义一个注解和解析一 ...

  3. C语言文件处理

    数据存储方式: 数据->变量->文件 数据 10个学生的信息: #define N 10 struct student { char stu_num[15]; char stu_name[ ...

  4. 前端一:走进HTML

    一:HTML(HyperText Markup Language)介绍 超文本标记语言,标准通用标记语言下的一个应用.“超文本”就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元素.超文本标记语 ...

  5. SQL --Chapter 04 数据更新

    数据的插入(INSERT语句的使用方法) INSERT INTO ShohinIns (shohin_id, shohin_mei, shohin_bunrui, hanbai_tanka, 原则上, ...

  6. parentNode、parentElement,childNodes、children 它们有什么区别呢?

    parentNode.parentElement,childNodes.children 它们有什么区别呢?parentElement 获取对象层次中的父对象. parentNode 获取文档层次中的 ...

  7. 【转载】oracle dbms_metadata.get_ddl的使用方法总结

    转自:http://www.jb51.net/article/39715.htm dbms_metadata.get_ddl()用于获取对象的ddl,其具体用法如下. 注意:在sqlplus里,为了更 ...

  8. PHP的学习--PHP加密

    PHP中的加密方式有如下几种 1. MD5加密 string md5 ( string $str [, bool $raw_output = false ] ) 参数 str  --  原始字符串. ...

  9. 在windows平臺下使用cygwin獲取root用戶權限

    最近在使用cygwin時發現一個問題,當我要使用root用戶權限時,竟然創建不了root賬戶.最後在網上找了下後,暫時衹找到了通過更改當前用戶權限獲得root權限的方法,具體如下: 实际环境:win1 ...

  10. Ext.Net 学习随笔 001 安装Ext.Net

    Ext.Net版本:4.1.0 Ext.Net官网:ext.net Ext.Net官方演示:mvc.ext.net Ext.Net MVC Example 下载:github.com/extnet/E ...