예제 #1
0
        public static IDataContext CreateDataContext(bool useTransaction = false)
        {
            lock (_lock)
            {
                if (_createDataContext.IsNull())
                {
                    throw new NullReferenceException("DataContextFactory.CreateDataContext is not properly configured.");
                }

                if (_currentContext.IsNull())
                {
                    return(_createDataContext(useTransaction));
                }

                IDataContext context;
                _currentContext.TryGetTarget(out context);

                if (context.IsNotNull() && !context.IsDisposed)
                {
                    throw new InvalidOperationException("CurrentContext has not been disposed.");
                }

                return(_createDataContext(useTransaction));
            }
        }
예제 #2
0
        DbContext RetrieveValidContext()
        {
            if (IsDisposed && _disposeDbContext)
            {
                throw new ObjectDisposedException("DbContext has been disposed.");
            }
            if (IsDisposed)
            {
                throw new ObjectDisposedException("DataContext has been disposed.");
            }
            if (_context.IsNull())
            {
                throw new NullReferenceException("DbContext is null.");
            }
            DbContext dbContext;

            _context.TryGetTarget(out dbContext);
            if (dbContext.IsNull())
            {
                throw new NullReferenceException("DbContext is null.");
            }
            return(dbContext);
        }