執行重複資料偵測

 

發行︰ 2017年1月

適用於: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

在您啟用重複資料偵測後,並發行重複資料偵測規則後,還有多種方式可以執行重複資料偵測。

動作​​

描述

偵測特定記錄的重複資料

使用 RetrieveDuplicatesRequest 訊息。 例如,您可以使用此訊息所有特定客戶記錄重複資料的所有聯絡人。

針對實體類型偵測重複資料

使用 BulkDetectDuplicatesRequest 訊息。 此訊息會送出在背景執行的非同步重複資料偵測工作。BulkDetectDuplicates 訊息用來尋找根據查詢運算式指定的實體類型的重複記錄傳送的訊息請求。 重複資料會根據實體類型的發行規則偵測。 偵測到的重複資料會儲存為重複資料 (DuplicateRecord),儲存在Microsoft Dynamics 365。 您可以使用 Retrieve 方法或 RetrieveMultiple 方法,即可擷取重複資料記錄。

重複資料偵測工作最多傳回 5000 重複資料。

CreateUpdate 作業之中偵測到重複資料

要傳遞重複資料偵測的選用參數 SuppressDuplicateDetection,可透過將值加到 ParametersCreateRequestUpdateRequest 的訊息請求屬性。SuppressDuplicateDetection 參數的值會決定 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. 著作權所有,並保留一切權利。 著作權