Compartir vía


Usar UpsertMultiple (versión preliminar)

[Este tema es documentación preliminar y está sujeto a modificaciones.]

Importante

Esta es una característica en versión preliminar.

Las vistas previas de características no se han diseñado para un uso de producción y pueden tener una funcionalidad restringida. Estas características están disponibles antes del lanzamiento oficial para que los clientes puedan tener un acceso anticipado y proporcionar comentarios.

Utilice Upsert para integrar datos con fuentes externas cuando no se sabe si la tabla existe en Dataverse o no. Las operaciones de upsert frecuentemente dependen de claves alternativas para identificar registros. Utilice UpsertMultiple para realizar operaciones de Upsert en masa.

Usa la clase UpsertMultipleRequest.

Este método UpsertMultipleExample estático depende de una tabla samples_bankaccount que tiene una columna de cadena con el nombre samples_accountname configurada como clave alternativa. También tiene una columna de cadena llamada samples_description. Este código utiliza el Constructor de entidad que establece keyName y keyValue para especificar el valor de clave alternativa.

/// <summary>
/// Demonstrates using UpsertMultiple with alternate key values
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance</param>
static void UpsertMultipleExample(IOrganizationService service)
{
    var tableLogicalName = "samples_bankaccount";
    // samples_accountname string column is configued as an alternate key
    // for the samples_bankaccount table
    var altKeyColumnLogicalName = "samples_accountname";

    // Create one record to update with upsert
    service.Create(new Entity(tableLogicalName)
    {
        Attributes =
        {
            {altKeyColumnLogicalName, "Record For Update"},
            {"samples_description","A record to update using Upsert" }
        }
    });

    // Using the Entity constructor to specify alternate key
    Entity toUpdate = new(
            entityName: tableLogicalName,
            keyName: altKeyColumnLogicalName,
            // Same alternate key value as created record.
            keyValue: "Record For Update");
    toUpdate["samples_description"] = "Updated using Upsert";

    Entity toCreate = new(
        entityName: tableLogicalName,
        keyName: altKeyColumnLogicalName,
        keyValue: "Record For Create");
    toCreate["samples_description"] = "A record to create using Upsert";

    // Add the records to a collection
    EntityCollection records = new()
    {
        EntityName = tableLogicalName,
        Entities = { toUpdate, toCreate }
    };

    // Send the request
    UpsertMultipleRequest request = new()
    {
        Targets = records
    };

    var response = (UpsertMultipleResponse)service.Execute(request);

    // Process the responses:
    foreach (UpsertResponse item in response.Results)
    {
        Console.WriteLine($"Record {(item.RecordCreated ? "Created" : "Updated")}");
    }
}

Salida:

Record Updated
Record Created

Disponibilidad

UpsertMultiple está disponible para tablas que admiten CreateMultiple y UpdateMultiple. Esto incluye todas las tablas elásticas. Las consultas encontradas en Disponibilidad con tablas estándar. no devolverán resultados para UpsertMultiple.

Ejemplos

Puede encontrar código de muestra en GitHub en github.com/microsoft/PowerApps-Muestras:

Dentro de Muestra: SDK para .NET, Usar operaciones masivas, busque Proyecto UpsertMultiple

Consulte también

Usar mensajes de operación en masa
Tablas elásticas
Muestra: SDK para .NET, Usar operaciones masivas