public IUnitOfWorkCompleteHandle Begin(UnitOfWorkOptions options) { options.FillDefaultsForNonProvidedOptions(_defaultOptions); if (options.Scope == TransactionScopeOption.Required && _currentUnitOfWorkProvider.Current != null) { return(new InnerUnitOfWorkCompleteHandle()); } var uow = _iocResolver.Resolve <IUnitOfWork>(); uow.Completed += (sender, args) => { _currentUnitOfWorkProvider.Current = null; }; uow.Failed += (sender, args) => { _currentUnitOfWorkProvider.Current = null; }; uow.Disposed += (sender, args) => { _iocResolver.Release(uow); }; uow.Begin(options); _currentUnitOfWorkProvider.Current = uow; return(uow); }
public IUnitOfWorkCompleteHandle Begin(UnitOfWorkOptions options) { options.FillDefaultsForNonProvidedOptions(defaultOptions); IDirectUnitOfWork uow = iocResolver.Resolve <IDirectUnitOfWork>(); uow.Completed += (sender, args) => { currentUnitOfWorkProvider.Current = null; }; uow.Failed += (sender, args) => { currentUnitOfWorkProvider.Current = null; }; uow.Disposed += (sender, args) => { iocResolver.Release(uow); }; uow.Begin(options); currentUnitOfWorkProvider.Current = uow; return(uow); }