public SingleUseAggregateCachedRepository( IRepositoryExFactory repositoryFactory, IIdentity id) { _repositoryFactory = repositoryFactory; _wrappedRepository = _repositoryFactory.Create(); _aggregate = _wrappedRepository.GetById <TAggregate>(id); }
/// <summary> /// /// </summary> /// <param name="wrappedRepository"></param> /// <param name="aggregate">When aggregate is not in cache this parameter is null and the /// instance of the aggregate is taken from the repository. </param> /// <param name="disposeAction"></param> /// <param name="afterSaveAction"></param> /// <param name="onExceptionAction"></param> /// <param name="id"></param> public CachableAggregateCachedRepository( IRepositoryEx wrappedRepository, TAggregate aggregate, Action <IIdentity, IRepositoryEx> disposeAction, Action <IIdentity, IRepositoryEx, IAggregateEx> afterSaveAction, Action <IIdentity, IRepositoryEx> onExceptionAction, IIdentity id) { _wrappedRepository = wrappedRepository; _disposeAction = disposeAction; _afterSaveAction = afterSaveAction; _onExceptionAction = onExceptionAction; _aggregate = aggregate ?? wrappedRepository.GetById <TAggregate>(id); }