///<summary> /// Sets a <see cref="Func{T}"/> of <see cref="IUnitOfWorkTransactionManager"/> that the /// <see cref="UnitOfWorkManager"/> uses to get an instance of <see cref="IUnitOfWorkTransactionManager"/> ///</summary> ///<param name="provider"></param> public void SetTransactionManagerProvider(Func <IUnitOfWorkTransactionManager> transactionManager) { Guard.Against <ArgumentNullException>(transactionManager == null, "transactionManager parameter cannot be null"); _logger.LogDebug("The transaction manager provider is being set or overriden. Using supplied" + " trasaction manager provider."); _stateStorage.Local.Remove <IUnitOfWorkTransactionManager>(LocalTransactionManagerKey); _stateStorage.Local.Put(LocalTransactionManagerKey, transactionManager); _currentTransactionManager = transactionManager(); }
public UnitOfWorkManager(IStateStorage stateStorage, IUnitOfWorkTransactionManager transactionManager, ILogger <UnitOfWorkManager> logger, IServiceProvider serviceProvider) { _stateStorage = stateStorage; _logger = logger; _serviceProvider = serviceProvider; this.SetTransactionManagerProvider(() => transactionManager); }