Utiliser des paramètres facultatifs

Dataverse fournit un ensemble de paramètres optionnels ou de valeurs d’en-tête de demande qu’un développeur d’une application cliente peut utiliser pour modifier le comportement de demandes individuelles. Cet article décrit les valeurs de paramètre et les en-têtes de demande que vous pouvez utiliser pour obtenir les comportements dont vous avez besoin.

Notes

Cet article présente ces paramètres, mais ne les explique pas de manière approfondie. Veuillez suivre les liens pour plus d’informations afin de bien comprendre les scénarios d’utilisation de ces paramètres.

Utilisation

La manière dont vous utilisez ces paramètres facultatifs varie selon que vous utilisez le kit de développement logiciel (SDK) Dataverse pour .NET ou l’API Web.

Habituellement, vous ajoutez le paramètre à la collection OrganizationRequest.Parameters de la classe de demande nommée.

Notes

Vous ne pouvez pas spécifier ces paramètres à l’aide des 7 méthodes de raccourci exposées avec le IOrganizationService. Vous devez utiliser la classe de requête nommée avec la méthode IOrganizationService.Execute.

Exception : lors de la définition de partitionid, ceci est défini comme un attribut de l’instance d’entité. Plus d’informations : Effectuer une opération de données avec la partition spécifiée

Pour plus d’informations :

Associer un composant de solution à une solution

Lorsque vous effectuez des opérations de données sur un composant de solution, vous pouvez l’associer à une solution en spécifiant le nom unique de la solution avec le paramètre SolutionUniqueName.

Vous pouvez utiliser ce paramètre avec ces messages :

  • AddPrivilegesRole
  • Create (PUBLICATION)
  • Delete (SUPPRESSION)
  • MakeAvailableToOrganizationTemplate
  • Update (CORRECTIF)

Les exemples suivants créent un composant de solution de ressource Web et l’ajoutent à la solution avec le nom unique ExampleSolution.

static void CreateWebResourceInSolution(IOrganizationService service)
{
    Entity webResource = new("webresource");

    webResource["displayname"] = "Simple HTML web resource";
    webResource["content"] = "PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxib2R5PgogICAgPGgxPkhlbGxvIFdvcmxkPC9oMT4KICA8L2JvZHk+CjwvaHRtbD4=";
    webResource["webresourcetype"] = new OptionSetValue(1);
    webResource["name"] = "sample_SimpleHTMLWebResource.htm";
    webResource["description"] = "An example HTML web resource";

    CreateRequest request = new();
    request.Target = webResource;
    request["SolutionUniqueName"] = "ExampleSolution";

    service.Execute(request);
}

Pour plus d’informations :

Pour plus d’informations :

Supprimer la détection des doublons

Si vous souhaitez que Dataverse génère une erreur lorsqu’un enregistrement que vous créez est déterminé comme un doublon, ou lorsque vous mettez à jour un enregistrement existant de telle sorte que les règles de détection des doublons seront évaluées pour un autre enregistrement, vous devez créer ou mettre à jour la ligne via le paramètre SuppressDuplicateDetection avec une valeur définie sur false.

Les exemples suivants renvoient une erreur lorsque les conditions suivantes sont définies sur true :

  • Détection des doublons est activé pour l’environnement lorsqu’une ligne est créée ou mise à jour.
  • La table account a la détection des doublons activée
  • Une règle détection des doublons est publiée qui vérifie si la valeur du name du compte correspond exactement à une ligne existante
  • Il existe un compte existant avec le nom Sample Account.
static void DemonstrateSuppressDuplicateDetection(IOrganizationService service)
{
    Entity account = new("account");
    account["name"] = "Sample Account";

    CreateRequest request = new()
    {
        Target = account
    };
    request.Parameters.Add("SuppressDuplicateDetection", false);

    try
    {
        service.Execute(request);
    }
    catch (FaultException<OrganizationServiceFault> ex)
    {
        throw ex.Detail.ErrorCode switch
        {
            -2147220685 => new InvalidOperationException(ex.Detail.Message),
            _ => ex,
        };
    }
}

Pour plus d’informations :

Ajouter une variable partagée au contexte d’exécution du plug-in

Utilisez le paramètre tag pour inclure une valeur de variable partagée accessible dans un plug-in. Ces informations supplémentaires permettent à un plug-in d’appliquer une logique qui dépend de l’application cliente.

Notes

Ce paramètre est destiné aux applications clientes pour pouvoir définir n’importe quelle valeur qu’elles souhaitent. Aucune fonctionnalité Microsoft ne devrait exiger que vous définissiez une valeur spécifique dans le code de votre application cliente pour activer différents comportements.

Pour accéder à la valeur d’un plug-in, utilisez la collection IExecutionContext.SharedVariables

if (context.SharedVariables.ContainsKey("tag")){
    string tagValue = context.SharedVariables["tag"];
}

Les exemples suivants transmettent cette valeur : A string value lors de la création d’un enregistrement de compte.

static void DemonstrateTag(IOrganizationService service)
{
    Entity account = new("account");
    account["name"] = "Sample Account";

    CreateRequest request = new()
    {
        Target = account
    };
    request.Parameters.Add("tag", "A string value");
    service.Execute(request);
}

Informations complémentaires : Variables partagées

Effectuer une opération de données avec la partition spécifiée

Lorsque vous utilisez des tables élastiques avec une stratégie de partitionnement, vous pouvez transmettre une valeur de chaîne unique avec le paramètre partitionid pour accéder aux données de table non relationnelles dans une partition de stockage.

Les exemples suivants utilisent la valeur partitionid de deviceId lors de la récupération d’un enregistrement contoso_sensordata.

private static Entity RetrieveRecord(
    IOrganizationService service,
    Guid contosoSensorDataId,
    string deviceId,
    string sessionToken)
{
    EntityReference entityReference = new("contoso_sensordata", contosoSensorDataId);

    RetrieveRequest request = new()
    {
        ColumnSet = new ColumnSet("contoso_value"),
        Target = entityReference,
        ["partitionId"] = deviceId, //To identify the record
        ["SessionToken"] = sessionToken //Pass the session token for strong consistency
    };
    var response = (RetrieveResponse)service.Execute(request);
    return response.Entity;

}

Alternativement, vous pouvez utiliser la valeur partitionid en utilisant le style de clé secondaire.

Contourner la logique Dataverse personnalisée

La logique synchrone doit être appliquée pendant la transaction et peut avoir un impact significatif sur les performances des opérations individuelles. Lors de l’exécution d’opérations en bloc, le temps supplémentaire pour ces opérations individuelles peut augmenter le temps nécessaire. Utilisez le paramètre BypassBusinessLogicExecution lorsque vous souhaitez améliorer les performances lors de l’exécution d’opérations de données en masse.

Important

L’utilisateur appelant doit avoir le privilège prvBypassCustomBusinessLogic.

L’exemple suivant définit le paramètre facultatif BypassBusinessLogicExecution à la fois pour la logique personnalisée synchrone et asynchrone lors de la création d’un nouvel enregistrement de compte à l’aide de la classe CreateRequest du SDK pour .NET.

static void DemonstrateBypassBusinessLogicExecution(IOrganizationService service)
{
    Entity account = new("account");
    account["name"] = "Sample Account";

    CreateRequest request = new()
    {
        Target = account
    };
    request.Parameters.Add("BypassBusinessLogicExecution", "CustomSync,CustomAsync");
    service.Execute(request);
}

En savoir plus sur les façons de contourner la logique Dataverse personnalisée

Contourner les flux Power Automate

Lorsque des opérations de données en bloc se produisent et déclenchent des flux, Dataverse crée des tâches système pour exécuter les flux. Lorsque le nombre de tâches système est très élevé, cela peut entraîner des problèmes de performances pour le système. Si cela se produit, vous pouvez choisir de contourner le déclenchement des flux en utilisant le paramètre optionnel SuppressCallbackRegistrationExpanderJob.

La table CallbackRegistration gère les déclencheurs de flux, et une opération interne appelée expander appelle les déclencheurs de flux enregistrés.

Notes

Lorsque cette option est utilisée, les propriétaires de flux ne reçoivent pas de notification indiquant que leur logique de flux a été contournée.

static void DemonstrateSuppressCallbackRegistrationExpanderJob(IOrganizationService service)
{
    Entity account = new("account");
    account["name"] = "Sample Account";

    CreateRequest request = new()
    {
        Target = account
    };
    request.Parameters.Add("SuppressCallbackRegistrationExpanderJob", true);
    service.Execute(request);
}

Plus d’informations : Contourner les flux Power Automate

Voir aussi

Utilisez les messages avec le SDK pour .NET
Composer des demandes HTTP et traiter les erreurs : autres en-têtes
Contourner la logique métier personnalisée

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).