//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()));
        }
Ejemplo n.º 2
0
 /// <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;
 }
Ejemplo n.º 3
0
 /// <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;
 }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
        //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)
        {
        }