コード例 #1
0
        /// <summary>
        /// Creates any entity records that this sample requires.
        /// </summary>
        public static void CreateRequiredRecords(CrmServiceClient service)
        {
            String accountName = "Contoso, Ltd";
            String websiteUrl  = "http://www.contoso.com/";

            Console.WriteLine("  Creating duplicate records (Account name={0}, Website URL={1})", accountName,
                              websiteUrl);
            // Create some duplicate records
            for (int i = 0; i < 2; i++)
            {
                var account = new Account()
                {
                    Name       = accountName,
                    WebSiteURL = websiteUrl
                };
                account.Id           = service.Create(account);
                duplicateAccounts[i] = account;
            }

            accountName = "Contoso Pharmaceuticals";
            Console.WriteLine("  Creating a non-duplicate record (Account name={0}, Website URL={1})",
                              accountName, websiteUrl);

            // Create a record that is NOT a duplicate
            var distinctAccount = new Account()
            {
                Name       = accountName,
                WebSiteURL = websiteUrl
            };

            distinctAccount.Id = service.Create(distinctAccount);
            account            = distinctAccount;


            Console.WriteLine("  Creating a duplicate detection rule");
            // Create a duplicate detection rule
            rule = new DuplicateRule()
            {
                Name               = "Accounts with the same Account name and website url",
                BaseEntityName     = Account.EntityLogicalName,
                MatchingEntityName = Account.EntityLogicalName
            };
            rule.Id = service.Create(rule);

            // Create a duplicate detection rule condition
            var nameCondition = new DuplicateRuleCondition()
            {
                BaseAttributeName     = "name",
                MatchingAttributeName = "name",
                OperatorCode          = new OptionSetValue(0), // value 0 = 'exact match'
                // set the regarding id to point to the rule created earlier,
                // associating this condition with that rule
                RegardingObjectId = rule.ToEntityReference()
            };

            service.Create(nameCondition);

            var websiteCondition = new DuplicateRuleCondition()
            {
                BaseAttributeName     = "websiteurl",
                MatchingAttributeName = "websiteurl",
                OperatorCode          = new OptionSetValue(0),
                RegardingObjectId     = rule.ToEntityReference()
            };

            service.Create(websiteCondition);

            Console.WriteLine("  Publishing duplicate detection rule");
            // Publish the rule
            var publishRequest = new PublishDuplicateRuleRequest()
            {
                DuplicateRuleId = rule.Id
            };
            var publishResponse = (PublishDuplicateRuleResponse)service.Execute(publishRequest);

            // The PublishDuplicateRule request returns before the publish is completed,
            // so we keep retrieving the async job state until it is "Completed"
            Console.WriteLine("  Checking to see if duplicate detection rule has finished publishing");
            WaitForAsyncJobToFinish(service, publishResponse.JobId, 120);
        }
コード例 #2
0
        /// <summary>
        /// Creates any entity records that this sample requires.
        /// </summary>
        public void CreateRequiredRecords()
        {
            #region Creating Accounts

            String accountName = "Contoso, Ltd";
            String websiteUrl = "http://www.contoso.com/";

            Console.WriteLine("  Creating duplicate records (Account name={0}, Website URL={1})", accountName, 
                websiteUrl);
            // Create some duplicate records
            for (int i = 0; i < 2; i++)
            {
                Account account = new Account()
                {
                    Name = accountName,
                    WebSiteURL = websiteUrl
                };
                account.Id = _serviceProxy.Create(account);
                _duplicateAccounts[i] = account;
            }

            accountName = "Contoso Pharmaceuticals";
            Console.WriteLine("  Creating a non-duplicate record (Account name={0}, Website URL={1})", 
                accountName, websiteUrl);
            // Create a record that is NOT a duplicate
            Account distinctAccount = new Account()
            {
                Name = accountName,
                WebSiteURL = websiteUrl
            };
            distinctAccount.Id = _serviceProxy.Create(distinctAccount);
            _account = distinctAccount;

            #endregion

            #region Create and Publish duplicate detection rule

            Console.WriteLine("  Creating a duplicate detection rule");
            // Create a duplicate detection rule
            _rule = new DuplicateRule()
            {
                Name = "Accounts with the same Account name and website url",
                BaseEntityName = Account.EntityLogicalName,
                MatchingEntityName = Account.EntityLogicalName
            };
            _rule.Id = _serviceProxy.Create(_rule);

            // Create a duplicate detection rule condition
            DuplicateRuleCondition nameCondition = new DuplicateRuleCondition()
            {
                BaseAttributeName = "name",
                MatchingAttributeName = "name",
                OperatorCode = new OptionSetValue(0), // value 0 = 'exact match'
                // set the regarding id to point to the rule created earlier,
                // associating this condition with that rule
                RegardingObjectId = _rule.ToEntityReference()
            };
            _serviceProxy.Create(nameCondition);

            DuplicateRuleCondition websiteCondition = new DuplicateRuleCondition()
            {
                BaseAttributeName = "websiteurl",
                MatchingAttributeName = "websiteurl",
                OperatorCode = new OptionSetValue(0),
                RegardingObjectId = _rule.ToEntityReference()
            };
            _serviceProxy.Create(websiteCondition);

            Console.WriteLine("  Publishing duplicate detection rule");
            // Publish the rule
            PublishDuplicateRuleRequest publishRequest = new PublishDuplicateRuleRequest()
            {
                DuplicateRuleId = _rule.Id
            };
            PublishDuplicateRuleResponse publishResponse = (PublishDuplicateRuleResponse)_serviceProxy.Execute(publishRequest);

            // The PublishDuplicateRule request returns before the publish is completed,
            // so we keep retrieving the async job state until it is "Completed"
            Console.WriteLine("  Checking to see if duplicate detection rule has finished publishing");
            WaitForAsyncJobToFinish(publishResponse.JobId, 60);

            #endregion
        }