Exemple #1
0
        /// <summary>
        /// Start a Unit of Work
        /// is called
        /// </summary>
        /// <returns>
        /// An IUnitOfwork object that can be used to work with the current UoW.
        /// </returns>
        public static IUnitOfWork Start(UnitOfWorkNestingOptions nestingOptions)
        {
            if (_globalNonThreadSafeUnitOfwork != null)
            {
                return(_globalNonThreadSafeUnitOfwork);
            }

            UnitOfWorkAdapter unitOfWorkAdapter = (UnitOfWorkAdapter)ServerContext.Request[CurrentUnitOfWorkKey];

            if (nestingOptions == UnitOfWorkNestingOptions.ReturnExistingOrCreateUnitOfWork &&
                unitOfWorkAdapter != null)
            {
                unitOfWorkAdapter.IncremementUsages();
                return(unitOfWorkAdapter);
            }

            UnitOfWorkAdapter previous = unitOfWorkAdapter;

            unitOfWorkAdapter = ObjectBuilder.Get <UnitOfWorkAdapter>();
            unitOfWorkAdapter.SetPrevious(previous);

            return(unitOfWorkAdapter);
        }
Exemple #2
0
 public void SetPrevious(UnitOfWorkAdapter previous)
 {
     _previous = previous;
 }
Exemple #3
0
 /// <summary>
 /// Mostly intended to support mocking of the unit of work.
 /// NOT thread safe!
 /// </summary>
 public static void RegisterGlobalUnitOfWork(UnitOfWorkAdapter globalNonThreadSafeUnitOfwork)
 {
     _globalNonThreadSafeUnitOfwork = globalNonThreadSafeUnitOfwork;
 }