Beispiel #1
0
        public IUnitOfWorkCompleteHandle Begin(UnitOfWorkOptions options)
        {
            _childScope = _scopeResolver.BeginScope();

            options.FillDefaultsForNonProvidedOptions(_defaultOptions);

            IUnitOfWork outerUow = _currentUnitOfWorkProvider.Current;

            if (options.Scope == TransactionScopeOption.Required && outerUow != null)
            {
                return(new InnerUnitOfWorkCompleteHandle());
            }

            var uow = _childScope.Resolve <IUnitOfWork>();

            uow.Completed += (sender, args) => { _currentUnitOfWorkProvider.Current = null; };

            uow.Failed += (sender, args) => { _currentUnitOfWorkProvider.Current = null; };

            uow.Disposed += (sender, args) => { _childScope.Dispose(); };

            //Inherit filters from outer UOW
            if (outerUow != null)
            {
                options.FillOuterUowFiltersForNonProvidedOptions(outerUow.Filters.ToList());
            }

            uow.Begin(options);

            _currentUnitOfWorkProvider.Current = uow;

            return(uow);
        }
        public void Dispose()
        {
            if (_isDisposed)
            {
                return;
            }

            _isDisposed = true;

            //TODO: Think about it!
            _scopeResolver.Dispose();
            _backgroundJobs.Clear();
        }
Beispiel #3
0
 /// <summary>
 ///     Releases unmanaged and - optionally - managed resources.
 /// </summary>
 public void Dispose()
 {
     _scope.Dispose();
 }
Beispiel #4
0
 public virtual void Dispose()
 {
     ScopeResolver.Dispose();
     Caches.Clear();
 }
Beispiel #5
0
 /// <summary>
 ///     Releases the handler.
 /// </summary>
 /// <param name="handler">The handler.</param>
 public void ReleaseHandler(IEventHandler handler)
 {
     _childScope.Dispose();
 }