總結:NHibernate——DAL層處理類AbstractDao

來源:互聯網
上載者:User

 

可以把增、刪、改、查都寫成泛型方法

    /// <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;

        }

}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.