zoukankan      html  css  js  c++  java
  • 总结:NHibernate——DAL层处理类AbstractDao<T>

    可以把增、删、改、查都写成泛型方法

        /// <summary>

        ///

        /// </summary>

        /// <typeparam name="T"></typeparam>

        public class AbstractDao<T>

        {

            private string m_sessionFactoryConfigPath;

            protected ISession CurrentSession

            {

                get

                {

                    return SessionManager.Instance.GetSession(m_sessionFactoryConfigPath);

                }

            }

     

            public AbstractDao(string sessionFactoryConfigPath)

            {

                if (string.IsNullOrEmpty(sessionFactoryConfigPath))

                {

                    throw new ArgumentNullException("");

                }

     

                m_sessionFactoryConfigPath = sessionFactoryConfigPath;

            }

     

     

            protected static object s_workLocker = new object();

     

     

            /// <summary>

            /// 获得实体对象

            /// </summary>

            /// <param name="key">关键字</param>

            /// <returns>对应实体</returns>

            public T GetEntity(Object key)

            {

                if (!CurrentSession.IsConnected)

                {

                    CurrentSession.Reconnect();

                }

                T entity = default(T);

     

                lock (s_workLocker)

                {

                    try

                    {

                        using (ISession session = CurrentSession)

                        {

                            using (session.BeginTransaction())

                            {

                                entity = session.Load<T>(key);

                            }

                        }

                    }

                    catch (Exception ex)

                    {

                        throw new PersistenceException("", ex);

                    }

                }

                return entity;

            }

     

            /// <summary>

            /// 获得IList<string>类型的返回值

            /// </summary>

            /// <param name="hql"></param>

            /// <returns></returns>

            public IList<string> GetIListString(string hql)

            {

                IList<string> lists = null;

     

                lock (s_workLocker)

                {

                    using (ISession session = CurrentSession)

                    {

                        using (ITransaction transaction = session.BeginTransaction())

                        {

                            try

                            {

                                lists = session.CreateQuery(hql).List<string>();

                                transaction.Commit();

                            }

                            catch (Exception ex)

                            {

                                transaction.Rollback();

                                throw new PersistenceException("", ex);

                            }

                        }

                    }

                }

                return lists;

            }

    }

  • 相关阅读:
    [ZOJ 4062][2018ICPC青岛站][Plants vs. Zombies]
    [Wannafly挑战赛28][B msc和mcc][预处理+枚举]
    [codeforces Mail.Ru Cup 2018 Round 1 D][ xor 操作]
    [codeforces round#475 div2 ][C Alternating Sum ]
    [zoj4045][思维+dfs]
    [zoj4046][树状数组求逆序(强化版)]
    费马大定理以及求解a^2+b^2=c^2的奇偶数列法则
    【HDOJ3567】【预处理bfs+映射+康拓展开hash】
    POJ1279 Art Gallery 多边形的核
    第八周 Leetcode 44. Wildcard Matching 水题 (HARD)
  • 原文地址:https://www.cnblogs.com/LeimOO/p/1634788.html
Copyright © 2011-2022 走看看