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(); }
/// <summary> /// Releases unmanaged and - optionally - managed resources. /// </summary> public void Dispose() { _scope.Dispose(); }
public virtual void Dispose() { ScopeResolver.Dispose(); Caches.Clear(); }
/// <summary> /// Releases the handler. /// </summary> /// <param name="handler">The handler.</param> public void ReleaseHandler(IEventHandler handler) { _childScope.Dispose(); }