private void ValidateDuplicates( IEnumerable <Duplicate> duplicates, IDuplicationRule <TEntity> rule) { if (duplicates == null) { throw new InvalidOperationException(string.Format( Resources.DuplicationRuleReturnedNull, rule.GetType().FullName)); } }
private IEnumerable <Duplicate> GetDuplicates( TEntity entity, IDuplicationRule <TEntity> rule) { IEnumerable <Duplicate> duplicates; try { using (var scope = new TransactionScope(TransactionScopeOption.Suppress)) { duplicates = rule.GetDuplicates(entity); } } catch (Exception exception) { throw new DestinationSystemException(exception); } this.ValidateDuplicates(duplicates, rule); return(duplicates); }
private void ApplyRule( TEntity entity, IDuplicationRule <TEntity> rule, Dictionary <EntityIdentifier, MatchWeight> duplicates) { IEnumerable <Duplicate> matches = this.GetDuplicates(entity, rule); foreach (Duplicate match in matches) { if (duplicates.ContainsKey(match.DestinationSystemEntityId) == false) { duplicates.Add(match.DestinationSystemEntityId, match.Weight); } else if (duplicates[match.DestinationSystemEntityId] < match.Weight) { duplicates[match.DestinationSystemEntityId] = match.Weight; } } }