中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

MVC+LINQToSQL的Repository模(mo)式(shi)之(一)數(shu)據工廠(chang)

namespace Data
{
    /// <summary>
    /// 數據庫建立工廠
    /// Created By : 張占嶺
    /// Created Date:2011-10-14
    /// Modify By:
    /// Modify Date:
    /// Modify Reason:
    /// </summary>
    internal static class DbFactory
    {
        static System.Timers.Timer sysTimer = new System.Timers.Timer(10000);
        volatile static Dictionary<Thread, DataContext[]> divDataContext = new Dictionary<Thread, DataContext[]>();
        static DbFactory()
        {
            sysTimer.AutoReset = true;
            sysTimer.Enabled = true;
            sysTimer.Elapsed += new System.Timers.ElapsedEventHandler(sysTimer_Elapsed);
            sysTimer.Start();
        }

        static void sysTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            List<Thread> list = new List<Thread>();
            foreach (Thread item in divDataContext.Keys)
            {
                if (item.ThreadState == ThreadState.Stopped)
                {
                    list.Add(item);
                }
            }
            for (int index = 0; index < list.Count; index++)
            {
                for (int refer = 0; refer < divDataContext[list[index]].Length; refer++)
                {
                    if (divDataContext[list[index]][refer] != null)
                    {
                        divDataContext[list[index]][refer].Dispose();
                        divDataContext[list[index]][refer] = null;
                    }
                }
                divDataContext.Remove(list[index]);
                list[index] = null;
            }
            list = null;
        }

        /// <summary>
        /// 通過工廠的制造模式獲取相應的LINQ數據庫連接對象
        /// </summary>
        /// <param name="dbName">數據庫名稱(需要與真實數據庫名稱保持一致)</param>
        /// <returns>LINQ數據庫連接對象</returns>
        public static DataContext Intance(string dbName)
        {
            return Intance(dbName, Thread.CurrentThread);
        }

        /// <summary>
        /// 通過工廠的制造模式獲取相應的LINQ數據庫連接對象
        /// </summary>
        /// <param name="dbName">數據庫名稱(需要與真實數據庫名稱保持一致)</param>
        /// <param name="thread">當前線程引用的對象</param>
        /// <returns>LINQ數據庫連接對象</returns>
        public static DataContext Intance(string dbName, Thread thread)
        {

            if (!divDataContext.Keys.Contains(thread))
            {
                divDataContext.Add(thread, new DataContext[2]);
        &nbsp;&nbsp;  }

            if (dbName.Equals("TEST"))
            {
                if (divDataContext[thread][0] == null)
                {
                    divDataContext[thread][0] = new Entity.TEST.LinqTESTDataContext();
                }
                return divDataContext[thread][0];
        &nbsp;   }

            if (dbName.Equals("EEE114"))
            {
                if (divDataContext[thread][1] == null)
                {
                    divDataContext[thread][1] = new Entity.EEE114.LinqEEE114DataContext();
                }
                return divDataContext[thread][1];
       &nbsp;  &nbsp; }

            else
            {
                return null;
            }
        }
    }
}

posted @ 2011-11-08 13:33  張占嶺  閱讀(2378)  評論(0)    收藏  舉報