Delen via


Duplicatendetectie uitvoeren

 

Gepubliceerd: januari 2017

Is van toepassing op: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Er zijn verschillende manieren om duplicatendetectie uit te voeren als u het inschakelt en de regels voor duplicatendetectie publiceert.

Actie

Beschrijving

Duplicaten detecteren voor een specifieke record

Gebruik het RetrieveDuplicatesRequest-bericht. U kunt dit bericht bijvoorbeeld gebruiken om alle contactpersonen te vinden die duplicaten zijn van een bepaalde accountrecord.

Duplicaten detecteren voor een entiteitstype

Gebruik het BulkDetectDuplicatesRequest-bericht. Dit bericht verzendt een asynchrone taak voor duplicatendetectie die wordt uitgevoerd op de achtergrond. Het BulkDetectDuplicates-bericht wordt gebruikt om de dubbele records voor een opgegeven entiteitstype te zoeken op basis van de query-expressie die in deze berichtaanvraag wordt doorgegeven. De duplicaten worden gedetecteerd op basis van de gepubliceerde regels voor duplicatendetectie voor het entiteitstype. De gedetecteerde duplicaatrecords worden opgeslagen als dubbele records (DuplicateRecord) in Microsoft Dynamics 365. U kunt dubbele records ophalen via de methode Retrieve of de methode RetrieveMultiple.

Maximaal 5000 duplicaten worden geretourneerd door de duplicatendetectietaak.

Duplicaten detecteren tijdens bewerkingen van Create en Update

Geef de optionele parameter voor duplicatendetectie SuppressDuplicateDetection door door een waarde toe te voegen aan de eigenschap Parameters van de CreateRequest en UpdateRequest. De parameterwaarde SuppressDuplicateDetection bepaalt of de bewerking Create of Update kan worden voltooid:

  • true - Maak de record of werk deze bij als een duplicaat wordt gevonden.

  • false - Maak de record niet of werk deze niet bij als een duplicaat wordt gevonden.

Notitie

Het doorgeven van de optionele parameter CalculateMatchCodeSynchronously is niet vereist. De matchcodes worden gebruikt om duplicaten te detecteren die synchroon worden berekend ongeacht de waarde die in deze parameter wordt doorgegeven.

Notitie

Als de optionele parameter voor duplicatendetectie is ingesteld op false en een duplicaat wordt gevonden, treedt een uitzondering op en wordt de record niet gemaakt of bijgewerkt.

Dit voorbeeld laat zien hoe u de optie voor duplicatendetectie als onderdeel van de CreateRequest- en UpdateRequest-berichtaanvragen doorgeeft:


// 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);
}

Zie ook

Duplicaatgegevens detecteren
Duplicatendetectie inschakelen
Berichten (aanvraag- en responsklassen) gebruiken met de methode Execute
Duplicatendetectieberichten

Microsoft Dynamics 365

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht