private IEnumerable <IOperation> ProcessDependencies(IReadOnlyCollection <long> factIds, MapToObjectsSpecProvider <TFact, IOperation> operationFactory)
 {
     using (Probe.Create("Querying dependent aggregates"))
     {
         var filter = _metadata.FindSpecificationProvider.Invoke(factIds);
         return(operationFactory.Invoke(filter).Map(_query).ToArray());
     }
 }
Exemplo n.º 2
0
        public MergeResult <T> DetectChanges(FindSpecification <T> specification)
        {
            using (var scope = new TransactionScope(TransactionScopeOption.Suppress))
            {
                var sourceObjects = _sourceProvider.Invoke(specification);
                var targetObjects = _targetProvider.Invoke(specification);

                var result = MergeTool.Merge(sourceObjects, targetObjects, _comparer);

                scope.Complete();

                return(result);
            }
        }
        public MergeResult <TCompared> DetectChanges <TCompared>(MapSpecification <IEnumerable <TOutput>, IEnumerable <TCompared> > mapSpec, FindSpecification <TFilter> specification, IEqualityComparer <TCompared> comparer)
        {
            using (var scope = new TransactionScope(TransactionScopeOption.Suppress))
            {
                var sourceObjects = _sourceProvider.Invoke(specification).Map(_query);
                var targetObjects = _targetProvider.Invoke(specification).Map(_query);

                var result = MergeTool.Merge(
                    mapSpec.Map(sourceObjects).ToArray(),
                    mapSpec.Map(targetObjects).ToArray(),
                    comparer);

                scope.Complete();

                return(result);
            }
        }