运行重复检测

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

在启用重复检测和发布重复检测规则之后,可通过若干种方式来执行重复检测。

操作​​

说明

检测指定记录的重复项

使用 RetrieveDuplicatesRequest 消息。 例如,您可以使用此消息来查找与特定客户记录重复的所有联系人。

检测实体类型的重复项

使用 BulkDetectDuplicatesRequest 消息。 此消息会提交在后台运行的异步重复检测作业。BulkDetectDuplicates 消息用于基于此消息请求中传递的查询表达式来查找指定实体类型的重复记录。 会根据实体类型的已发布重复规则来检测重复项。 检测到的重复项在 Microsoft Dynamics 365 中作为重复记录 (DuplicateRecord) 存储。 您可以使用 Retrieve 方法或 RetrieveMultiple 方法检索重复记录。

重复检测作业最多返回 5000 个重复项。

CreateUpdate 操作期间检测重复项

通过为 CreateRequestUpdateRequest 消息请求的 SuppressDuplicateDetection 属性添加值,传递重复检测可选参数 ParametersSuppressDuplicateDetection 参数值确定 CreateUpdate 操作是否可完成:

  • true – 在发现重复项时创建或更新记录。

  • false – 在发现重复项时不创建或更新记录。

备注

不需要传递 CalculateMatchCodeSynchronously 可选参数。 将同步计算用于检测重复项的匹配代码,而不管此参数中传递的值为何。

备注

如果重复检测可选参数设置为 false 并且发现重复项,则会引发异常,并且不会创建或更新记录。

以下示例演示如何在 CreateRequestUpdateRequest 消息请求中传递重复检测选项:


// Connect to the Organization service. 
// The using statement assures that the service proxy will be properly disposed.
using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri,serverConfig.Credentials, serverConfig.DeviceCredentials))
{
    // This statement is required to enable early-bound type support.
    _serviceProxy.EnableProxyTypes();

    _service = (IOrganizationService)_serviceProxy;

    CreateRequiredRecords();

    // Create and account record with the named Proseware, Inc. and already existing Account Number.
    Account account = new Account 
    {
        Name = "Proseware, Inc.",
        AccountNumber = "ACC005"
    };

    // Create operation by suppressing duplicate detection
    CreateRequest reqCreate = new CreateRequest();
    reqCreate.Target = account;
    reqCreate.Parameters.Add("SuppressDuplicateDetection", true); // Change to false to activate the duplicate detection.
    CreateResponse createResponse = (CreateResponse)_service.Execute(reqCreate);
    _dupAccountId = createResponse.id;
    Console.Write("Account: {0} {1} created with SuppressDuplicateDetection to true, ", 
        account.Name, account.AccountNumber);

    // Retrieve the account containing with its few attributes.
    ColumnSet cols = new ColumnSet(
        new String[] { "name", "accountnumber"});

    Account retrievedAccount = (Account)_service.Retrieve("account", _dupAccountId, cols);
    Console.Write("retrieved, ");

    // Update the existing account with new account number.
    retrievedAccount.AccountNumber = "ACC006";                   

    // Update operation – update record, if a duplicate is not found.
    UpdateRequest reqUpdate = new UpdateRequest();
    reqUpdate.Target = retrievedAccount;
    reqUpdate["SuppressDuplicateDetection"] = false; // Duplicate detection is activated.

    // Update the account record.
    UpdateResponse updateResponse = (UpdateResponse)_service.Execute(reqUpdate);
    Console.WriteLine("and updated.");

    DeleteRequiredRecords(promptforDelete);
}

另请参阅

检测重复数据
启用重复检测
将消息(请求和响应类)与 Execute 方法结合使用
重复检测消息

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权