Condividi tramite


Esegui rilevamento duplicati

 

Data di pubblicazione: gennaio 2017

Si applica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Esistono diversi modi di eseguire il rilevamento duplicati dopo aver abilitato e pubblicato le regole di rilevamento duplicati.

Azione

Descrizione

Rileva e recupera i duplicati per un record specificato

Utilizzare il messaggio RetrieveDuplicatesRequest. Ad esempio, è possibile utilizzare questo messaggio per trovare tutti i contatti duplicati di un record di account specifico.

Rileva i duplicati per un tipo di entità

Utilizzare il messaggio BulkDetectDuplicatesRequest. Questo messaggio invia un processo di rilevamento dei duplicati asincrono che viene eseguito in background. Il messaggio BulkDetectDuplicates viene utilizzato per trovare i record duplicati per un tipo di entità specificato in base all'espressione di query passata in questa richiesta del messaggio. I duplicati vengono eseguiti in base alle regole duplicati pubblicate per il tipo di entità. I duplicati rilevati vengono archiviati come record duplicati (DuplicateRecord) in Microsoft Dynamics 365. È possibile recuperare i record duplicati tramite il metodo Retrieve o il metodo RetrieveMultiple.

Al massimo 5000 duplicati vengono restituiti dal processo di rilevamento duplicati.

Rilevamento dei duplicati durante le operazioni Create e Update

Passare il parametro facoltativo di rilevamento duplicati SuppressDuplicateDetection aggiungendo un valore alla proprietà Parameters delle richieste di messaggio CreateRequest e UpdateRequest. Il valore del parametro SuppressDuplicateDetection determina se l'operazione Update o Create può essere completata:

  • true: creare o modificare il record, se è disponibile un duplicato.

  • false: non creare o modificare il record, se è disponibile un duplicato.

Nota

Il passaggio del parametro facoltativo CalculateMatchCodeSynchronously non è obbligatorio. I codici di corrispondenza utilizzati per rilevare i duplicati vengono calcolati in modo sincrono indipendentemente dal valore passato in questo parametro.

Nota

Se il parametro facoltativo di rilevamento dei duplicati è impostato su false e viene trovato un duplicato, viene generata un'eccezione e il record non viene creato o aggiornato.

Nell'esempio seguente viene illustrato come passare l'opzione di rilevamento duplicati come parte delle richieste di messaggio UpdateRequest e CreateRequest:


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

Vedere anche

Rilevare dati duplicati
Abilita rilevamento duplicati
Utilizzare i messaggi (classi di richiesta e di risposta) con il metodo Execute
Messaggi del rilevamento duplicati

Microsoft Dynamics 365

© 2017 Microsoft. Tutti i diritti sono riservati. Copyright