//Func<CustomUnitOfWorkSettings, ITransactionManager> getTransactionManager; /// <summary> /// Configures <see cref="UnitOfWorkScope"/> settings. /// </summary> /// <param name="containerAdapter">The <see cref="IContainerAdapter"/> instance.</param> public void Configure(IContainerAdapter containerAdapter) { var settings = new CustomUnitOfWorkSettings() { AutoCompleteScope = _autoCompleteScope, DefaultIsolation = _defaultIsolation }; containerAdapter.RegisterInstance(settings); containerAdapter.RegisterSingleton <IUnityUnitOfWorkManager, UnityUnitOfWorkManager>(); //containerAdapter.RegisterInstance<ITransactionManager>(getTransactionManager(settings)); containerAdapter.RegisterInstance <IUnitOfWorkGuid>(new UnitOfWorkGuid()); containerAdapter.RegisterSingleton <IUnitOfWorkScopeFactory, UnityUnitOfWorkScopeFactory>(); containerAdapter.Register <IUnitOfWorkScope, UnityUnitOfWorkScope>(); //UnitOfWorkSettings.AutoCompleteScope = _autoCompleteScope; //UnitOfWorkSettings.DefaultIsolation = _defaultIsolation; if (_useBusinessTransaction) { containerAdapter.RegisterSingleton <IBusinessTransactionObservable, BusinessTransactionSubjectWrapper>(); containerAdapter.RegisterSingleton <IBusinessTransactionSubscriber, BusinessTransactionSubjectWrapper>(); containerAdapter.RegisterInstance <IBusinessTransactionSubjectFactory>(new BusinessTransactionSubjectFactory(() => new BusinessTransactionSubject())); } else { var subject = new StubTransactionSubject(); containerAdapter.RegisterInstance <IBusinessTransactionObservable>(subject); containerAdapter.RegisterInstance <IBusinessTransactionSubscriber>(subject); containerAdapter.RegisterInstance <IBusinessTransactionSubjectFactory>(new BusinessTransactionSubjectFactory(() => subject)); } //IBusinessTransactionSubject subject = !_useBusinessTransaction? new StubTransactionSubject(): new BusinessTransactionSubjectWrapper(); //containerAdapter.RegisterInstance<IBusinessTransactionSubjectFactory>(new BusinessTransactionSubjectFactory(!_useBusinessTransaction ? () => subject : () => new BusinessTransactionSubject())); }
/// <summary> /// Default Constructor. /// Creates a new instance of the <see cref="UnitOfWorkManager"/>. /// </summary> public UnityUnitOfWorkManager(IState state, IBusinessTransactionSubjectFactory subjectFactory, IUnitOfWorkGuid guid, IUnitOfWorkFactory scopeFactory, CustomUnitOfWorkSettings settings) { //_provider = DefaultTransactionManager; _subjectFactory = subjectFactory; _state = state; _guid = guid; _scopeFactory = scopeFactory; _settings = settings; }
/// <summary> /// Default Constructor. /// Creates a new instance of the <see cref="TransactionManager"/> class. /// </summary> public UnityTransactionManager(IUnitOfWorkFactory scopeFactory, CustomUnitOfWorkSettings settings, IBusinessTransactionSubject subject) { _logger.Debug(x => x("New instance of TransactionManager with Id {0} created.", _transactionManagerId)); //Guard.Against<ArgumentNullException>(container == null, "Ошибка создания UnityTransactionManager: не задан тек. Unity-контейнер"); Guard.Against <ArgumentNullException>(settings == null, "Ошибка создания UnityTransactionManager: не задан Settings"); //Container = container; _scopeFactory = scopeFactory; this._isolationLevel = settings.DefaultIsolation; _subject = subject; }
/// <summary> /// Overloaded Constructor. /// Creates a new instance of the <see cref="UnitOfWorkScope"/> class. /// </summary> /// <param name="mode">A <see cref="TransactionMode"/> enum specifying the transation mode /// of the unit of work.</param> public UnityUnitOfWorkScope(IUnityUnitOfWorkManager manager, TransactionMode mode, CustomUnitOfWorkSettings settings) { //Guard.Against<ArgumentNullException>(container == null, "Ошибка создания UnityUnitOfWorkScope: не определен Unity-контейнер"); Guard.Against <ArgumentNullException>(settings == null, "Ошибка создания UnityUnitOfWorkScope: не определены Settings"); _manager = manager; //Container = container; _autoCompleteScope = settings.AutoCompleteScope; //UnitOfWorkManager.CurrentTransactionManager.EnlistScope(this, mode); //Container.Resolve<ITransactionManager>().EnlistScope(this, mode); _manager.CurrentTransactionManager().EnlistScope(this, mode); }
//IUnityContainer Container { set; get; } /// <summary> /// Default Constuctor. /// Creates a new <see cref="UnitOfWorkScope"/> with the <see cref="System.Data.IsolationLevel.Serializable"/> /// transaction isolation level. /// </summary> public UnityUnitOfWorkScope(IUnityUnitOfWorkManager manager, CustomUnitOfWorkSettings settings) : this(manager, TransactionMode.Default, settings) { }