示例#1
0
 private void ValidateDuplicates(
     IEnumerable <Duplicate> duplicates, IDuplicationRule <TEntity> rule)
 {
     if (duplicates == null)
     {
         throw new InvalidOperationException(string.Format(
                                                 Resources.DuplicationRuleReturnedNull,
                                                 rule.GetType().FullName));
     }
 }
示例#2
0
        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);
        }
示例#3
0
        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;
                }
            }
        }