重複データ検出を実行する

 

公開日: 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 件の重複が返されます。

Create および Update の実行中に重複データを検出する

CreateRequest および UpdateRequest メッセージ要求の SuppressDuplicateDetection プロパティに値を追加して、オプションの重複データ検出パラメーター Parameters を渡します。SuppressDuplicateDetection パラメーター値は、Create または Update の実行を完了するかどうかを指定します。

  • true – 重複データが検出された場合にレコードを作成または更新します。

  • false – 重複データが検出された場合にレコードを作成または更新しません。

注意

CalculateMatchCodeSynchronously オプション パラメーターを渡す必要はありません。 重複の検出に使用される一致コードは、このパラメーターに渡される値に関係なく同期的に計算されます。

注意

オプションの重複データ検出パラメーターを false に設定した場合、重複データが検出されると例外がスローされ、レコードは作成または更新されません。

次の例は、重複データ検出オプションを CreateRequest および UpdateRequest メッセージ要求の一部として渡す方法を示しています。


// 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. All rights reserved. 著作権