/// <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); }
public void SetPrevious(UnitOfWorkAdapter previous) { _previous = previous; }
/// <summary> /// Mostly intended to support mocking of the unit of work. /// NOT thread safe! /// </summary> public static void RegisterGlobalUnitOfWork(UnitOfWorkAdapter globalNonThreadSafeUnitOfwork) { _globalNonThreadSafeUnitOfwork = globalNonThreadSafeUnitOfwork; }