飞凌通信息科技

企业信息化专家

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

本文关于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         }
View Code

写操作方法

更新

 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         }
View Code
 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         }
View Code
 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         }
View Code
 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         }
View Code
 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 > 0)
 7             {
 8                 foreach (ICriterion cri in whereCondition)
 9                 {
10                     criteria.Add(cri);
11                 }
12             }
13 
14             if (orderColumnList != null && orderColumnList.Count > 0)
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 != 0)
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及以后版本打开

posted on 2016-10-31 09:28  Eric.Wu  阅读(216)  评论(0编辑  收藏  举报
易用软件 | 专注中小企业信息化