示例#1
0
        /// <summary>
        /// 生产一个数据库上下文
        /// </summary>
        /// <param name="handleType"></param>
        /// <returns></returns>
        internal CommonContext Manufacture(HandleType handleType, Type handleClass)
        {
            ManufactureCache MCModel = CacheList.FindLast(p => p.HandleClass == handleClass);

            if (handleType == HandleType.读 && MCModel != null && MCModel.UseWriteTime != null && (DateTime.Now - ((DateTime)MCModel.UseWriteTime)).TotalSeconds <= SyncDelayTime)
            {
                //读取的时候检测如果距离上一次对该表写入的时间间隔不超过设置的延迟(秒)则继续用上一次写的数据库上下文进行读取数据
                return(new CommonContext(MCModel.Context.ConnectionString, MCModel.Context.Service));
            }
            else
            {
                ManufactureDeploy MDModel;
                if (handleType == HandleType.读)
                {
                    //读数据库
                    MDModel = Extract(ServiceType.只读);
                }
                else
                {
                    //写数据库
                    MDModel = Extract(ServiceType.读写);
                }
                //抽取数据库实例
                var context = new CommonContext(MDModel.ConnectionString, MDModel.ServiceTypeEnum, handleClass);
                context.SaveChangesEvent += Context_SaveChangesEvent;
                return(context);
            }
        }
示例#2
0
        /// <summary>
        /// 保存后发生
        /// </summary>
        /// <param name="context"></param>
        /// <param name="handleClass"></param>
        private void Context_SaveChangesEvent(CommonContext context, Type handleClass)
        {
            ManufactureCache MCModel = CacheList.FindLast(p => p.HandleClass == handleClass);

            if (MCModel == null)
            {
                MCModel = new ManufactureCache()
                {
                    Context      = context,
                    HandleClass  = handleClass,
                    UseWriteTime = DateTime.Now
                };
                CacheList.Add(MCModel);
            }
            else
            {
                MCModel.Context      = context;
                MCModel.HandleClass  = handleClass;
                MCModel.UseWriteTime = DateTime.Now;
            }
        }