Exemple #1
0
        public void EndDefaultContext()
        {
            EfReaderAndWriterContext context = null;
            HttpContext currentContext       = HttpContext.Current;

            if (currentContext == null)
            {
                context = CallContext.GetData(_defaultContextName) as EfReaderAndWriterContext;
            }
            else
            {
                context = currentContext.Items[_defaultContextName] as EfReaderAndWriterContext;
            }
            if (context != null)
            {
                if (context.Reader != null)
                {
                    context.Reader.Dispose();
                }
                context.Writer.Dispose();
            }
            if (currentContext == null)
            {
                CallContext.SetData(_defaultContextName, null);
            }
            else
            {
                currentContext.Items.Remove(_defaultContextName);
            }
        }
Exemple #2
0
        public void StartReadWriteContext()
        {
            if (this.HasDataAccessTypeContext)
            {
                throw new DataAccessException("不能重复开启数据访问上下文");
            }
            var context = new EfReaderAndWriterContext();

            if (!string.IsNullOrEmpty(this.ReadConnectionString))
            {
                context.Reader = new IkObjectContext(this.ReadConnectionString);
            }
            context.Writer      = new IkObjectContext(this.WriteConnectionString);
            context.ContextType = DataAccessContextType.ReadWrite;
            HttpContext currentContext = HttpContext.Current;

            if (currentContext == null)
            {
                CallContext.SetData(_sessionName, context);
            }
            else
            {
                currentContext.Items[_sessionName] = context;
            }
        }