NHibernate简易的范型工具类,基本功能实现,如有改进请告诉咱呀!【原】

------下为工具类------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//添加如下引入
using NHibernate.Cfg;
using NHibernate;

namespace DAL.publicbaseclass
{
    public class DBHelperNHibernate
    {
        private static ISessionFactory sessionFactory;
        private static void isessionFactory()
        {
            try
            {
                sessionFactory = new Configuration().Configure().BuildSessionFactory();
            }
            catch (Exception ex)
            {

                throw ex;
            }

        }
        public static ISession GetSession()
        {
            isessionFactory();
            return sessionFactory.OpenSession();
        }
        public static void executeSave<T>(T obj)
        {
            ISession session = GetSession();
            ITransaction tx = session.BeginTransaction();
            session.Save(obj);
            try
            {
                tx.Commit();
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                session.Close();
            }

        }
        public static void executeDelete<T>(int id)
        {
            ISession session = GetSession();
            ITransaction tx = session.BeginTransaction();
            T t = session.Get<T>(id);
            session.Delete(t);
            try
            {
                tx.Commit();
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                session.Close();
            }

        }
        public static void executeUpdate<T>(T t)
        {
            ISession session = GetSession();
            ITransaction tx = session.BeginTransaction();
            session.Update(t);
            try
            {
                tx.Commit();
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                session.Close();
            }

        }
        public static T executeGet<T>(int id)
        {
            ISession session = GetSession();
            ITransaction tx = session.BeginTransaction();
            T t = session.Get<T>(id);
            try
            {
                tx.Commit();
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                session.Close();
            }
            return t;
        }
        public static Int64 executeInt64Query(string Hql)
        {
            Int64 count = 0;
            ISession session = GetSession();
            ITransaction tx = session.BeginTransaction();
            count = (Int64)session.CreateQuery(Hql).UniqueResult();
            try
            {
                tx.Commit();
            }
            catch (Exception ex)
            {

                throw ex;

            }
            finally
            {
                session.Close();
            }
            return count;
        }
        public static IList<T> executeQuery<T>(string Hql, string[] pramts)
        {
            ISession session = GetSession();
            ITransaction tx = session.BeginTransaction();
            IQuery query = session.CreateQuery(Hql);
            if (pramts != null)
            {
                for (int i = 0; i < pramts.Length; i++)
                {
                    query.SetParameter(i, pramts[i]);
                }
            }
            IList<T> list = query.List<T>();
            try
            {
                tx.Commit();
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                session.Close();
            }
            return list;
        }
        public static IList<T> executeQuery<T>(string Hql, int pagesize, int currentpage)
        {
            ISession session = GetSession();
            ITransaction tx = session.BeginTransaction();
            IQuery query = session.CreateQuery(Hql);
            query.SetFirstResult((pagesize - 1) * currentpage);
            query.SetMaxResults(pagesize);
            IList<T> list = query.List<T>();
            try
            {
                tx.Commit();
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                session.Close();
            }
            return list;
        }
    }
}
------下为实现------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
using DomainModel.Entities;

namespace DAL
{
    public class UsersDal : IDAL.IUsersDal
    {

        #region IUsersDal 成员

        public void userSave(Users user)
        {
            DAL.publicbaseclass.DBHelperNHibernate.executeSave<Users>(user);
        }

        public void userDelete(int id)
        {
            DAL.publicbaseclass.DBHelperNHibernate.executeDelete<Users>(id);
        }

        public void userUpdate(Users user)
        {
            DAL.publicbaseclass.DBHelperNHibernate.executeUpdate<Users>(user);
        }

        public Users userGet(int id)
        {
           return DAL.publicbaseclass.DBHelperNHibernate.executeGet<Users>(id);
        }

        public IList<Users> userQuery()
        {
            string hql = "from Users";
            string[] pramts = null;
            return DAL.publicbaseclass.DBHelperNHibernate.executeQuery<Users>(hql, pramts);
        }

        public IList<Users> userQuery(int pagesize, int currentpage)
        {
            string hql = "from DomainModel.Entities.Users";
            return DAL.publicbaseclass.DBHelperNHibernate.executeQuery<Users>(hql,pagesize,currentpage);
        }

        #endregion
    }
}

 

如有问题请回复哦,如果喜欢的话就收藏好好使用吧。

posted @ 2010-06-07 23:14  鯊鲨  阅读(255)  评论(0编辑  收藏  举报