Nhibernate基类
NHibernate是一个面向.NET环境的对象/关系数据库映射工具
1.webconfig部分
<?xml version="1.0"?> <configuration> <!--配置段处理程序声明区--> <configSections> <section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> </configSections> <!--配置段处理程序声明区--> <system.web> <compilation debug="true" targetFramework="4.0"/> </system.web> <!--Nhibernate连接--> <nhibernate> <add key="show-sql" value="true"/> <add key="hibernate.use_proxy_validator" value="false"/> <add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/> <add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2005Dialect"/> <add key="hibernate.connection.connection_string" value="Server=.\SQLEXPRESS;User=test;Password=test;Initial Catalog=demo;integrated security=false;persist security info=True;"/> </nhibernate> <!--Nhibernate连接--> </configuration>
2.读取配置文件
using System; using System.Collections.Generic; using System.Linq; using System.Text; /**/ using NHibernate; using NHibernate.Cfg; namespace DAL { public class NHibernateSession { private static readonly ISessionFactory sessionFactory; #region 读取配置文件 /// <summary> /// 读取配置文件 /// </summary> static NHibernateSession() { Configuration cfg = new Configuration(); cfg.AddAssembly("Model"); sessionFactory = cfg.BuildSessionFactory(); } #endregion public static ISessionFactory GetCurrentSessionFactory() { return sessionFactory; } } }
3.基类操作
using System; using System.Collections.Generic; using System.Linq; using System.Text; /**/ using NHibernate; using NHibernate.Cfg; using System.Collections; namespace DAL { public class BaseDAL { #region 查询,返回IList /// <summary> /// 查询,返回IList /// </summary> /// <param name="hql"></param> /// <returns></returns> public static IList GetObjectList(string hql) { using (ISession session=NHibernateSession.GetCurrentSessionFactory().OpenSession())//打开数据库 { //查询 IQuery iquery = session.CreateQuery(hql); IList list=null; try { list=iquery.List(); } catch(Exception ex) { throw ex; } session.Close(); return list; } } #endregion #region 分页查询 /// <summary> /// 分页查询 /// </summary> /// <param name="hql"></param> /// <param name="page"></param> /// <param name="pageSize"></param> /// <returns></returns> public static IList GetObjectList(string hql, int page, int pageSize) { using (ISession session=NHibernateSession.GetCurrentSessionFactory().OpenSession()) { IQuery iquery = session.CreateQuery(hql); IList list = null; try { iquery.SetFirstResult(page*pageSize);//开始 iquery.SetMaxResults(pageSize);//结束 list=iquery.List(); } catch(Exception ex) { throw ex; } session.Close(); return list; } } #endregion #region 增加一条记录 /// <summary> /// 增加一条记录 /// </summary> /// <param name="obj"></param> /// <returns></returns> public static object Insert(object obj) { if (obj != null) { using (ISession session = NHibernateSession.GetCurrentSessionFactory().OpenSession()) { ITransaction transaction = session.BeginTransaction(); object result = null; try { result = session.Save(obj); } catch (Exception ex) { throw ex; } transaction.Commit(); session.Close(); return result; } } else return null; } #endregion #region 更新 /// <summary> /// 更新 /// </summary> /// <param name="obj"></param> /// <returns></returns> public static bool Update(object obj) { bool result = false; using (ISession session=NHibernateSession.GetCurrentSessionFactory().OpenSession()) { ITransaction transaction = session.BeginTransaction(); try { session.Update(obj); transaction.Commit(); result = true; } catch (Exception ex) { throw ex; } session.Close(); return result; } } #endregion #region 删除 /// <summary> /// 删除 /// </summary> /// <param name="obj"></param> /// <returns></returns> public static bool Delete(string hql) { bool result = false; using (ISession session=NHibernateSession.GetCurrentSessionFactory().OpenSession()) { ITransaction transaction = session.BeginTransaction(); try { session.Delete(hql); transaction.Commit(); result = true; } catch (Exception ex) { throw ex; } session.Close(); return result; } } #endregion #region 执行存储过程 /// <summary> /// 执行存储过程 /// </summary> /// <param name="spname"></param> /// <param name="parms"></param> /// <param name="entityType"></param> /// <returns></returns> public static IList ExecSP(string spname,string parms,Type entityType) { using (ISession session=NHibernateSession.GetCurrentSessionFactory().OpenSession()) { ITransaction transaction = session.BeginTransaction(); string sqlQuery = "Exec" + spname + " " + parms; IQuery iquery = session.CreateSQLQuery(sqlQuery).AddEntity(entityType); IList list = iquery.List(); transaction.Commit(); session.Close(); return list; } } #endregion #region 执行存储过程 /// <summary> /// 执行存储过程 /// </summary> /// <param name="spname"></param> /// <param name="parms"></param> /// <param name="entityType"></param> /// <returns></returns> public static IList ExecSP(string spname, string[] parms, Type entityType) { using (ISession session=NHibernateSession.GetCurrentSessionFactory().OpenSession()) { ITransaction transaction = session.BeginTransaction(); string sqlQuery = "Exec" + spname; foreach(string p in parms) { sqlQuery += "'" + p + "',"; } sqlQuery = sqlQuery.Remove(sqlQuery.Length-1); IQuery iquery = session.CreateSQLQuery(sqlQuery).AddEntity(entityType); IList list = iquery.List(); transaction.Commit(); session.Close(); return list; } } #endregion } }
欢迎转载或分享,如果文章对你有帮助,请给予推荐,欢迎交流及关注!!!