本文关于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. xcode 第三方插件遇到问题

    xcode 第三方安装的路径 ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins 

  2. Protobuf C#教程 ThriftC#教程大合辑

    android与PC,C#与Java 利用protobuf 进行无障碍通讯[Socket] http://www.cnblogs.com/TerryBlog/archive/2011/04/23/20 ...

  3. ubuntu eclipse 中安装 python + PyDev

    参照网络和个人总结 系统配置:ubuntu12.04       jdk:1.6      eclipse:3.4 首先你的系统必须安装好pyton .也ubuntu系统自带的 刚开始以为是jdk安装 ...

  4. (转)CSS中的绝对定位与相对定位定位

    层级关系为: <div ——————————— position:relative; 不是最近的祖先定位元素,不是参照物<div—————————-没有设置为定位元素,不是参照物<d ...

  5. (转)asp.net中获得客户端的IP地址

    因为要在项目中取到客户端IP,在网上搜了下相关资料,其中有一篇文章总结的比较详细,这里就把一些我用的上总结一下 方便以后查阅. 通常我们都通过下面的代码获得IP:   string ip =Syste ...

  6. Ubuntu 14.04 安装VMware 12

    /*********************************************************************** * Ubuntu 14.04 安装VMware 12 ...

  7. C++学习笔记25:makefile文件2

    Makefile文件语法 行解析:命令按行解析 命令行的行首字符为Tab键,其他行的行首字符不得为Tab键,但可以使用多个空格缩进 换行:命令太长时,行尾使用"\"换行 注释:行首 ...

  8. 转载:ORA-01438: 值大于为此列指定的允许精度

    Number的数据声明如下: 表示        作用        说明Number(p, s)        声明一个定点数        p(precision)为精度,s(scale)表示小数 ...

  9. 新冲刺Sprint3(第六天)

    一.Sprint介绍 商家功能模块继续完善着,加快了工作的步伐. 二.Sprint周期 看板: 燃尽图:

  10. web安全之文件上传漏洞

    成因: 当文件上传时,若服务端脚本语言未对上传的文件进行严格验证和过滤,若恶意用户上传恶意的 脚本文件时,就有可能控制整个网站甚至是服务器,这就是文件上传漏洞. 权限: 1. 后台权限:登陆了后台,可 ...