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 synchrone personnalisée

Notes

Les nouvelles façons de contourner la logique métier sont en version préliminaire. En savoir plus sur les nouvelles fonctionnalités pour contourner la logique métier personnalisée (version préliminaire)

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 BypassCustomPluginExecution 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 prvBypassCustomPlugins.

Il existe deux manières d’utiliser ce paramètre avec le SDK pour .NET.

Définir la valeur comme paramètre facultatif

L’exemple suivant définit le paramètre facultatif BypassCustomPluginExecution lors de la création d’un nouvel enregistrement de compte avec la catégorie CreatRequest.

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

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

Définir la propriété CrmServiceClient.BypassPluginExecution

L’exemple suivant définit la propriété CrmServiceClient.BypassPluginExecution lors de la création d’un nouvel enregistrement de compte :

var service = new CrmServiceClient(connectionString);  

service.BypassPluginExecution = true;

var account = new Entity("account");
account["name"] = "Sample Account";

service.Create(account);

Étant donné que ce paramètre est appliqué au service, il restera défini pour toutes les requêtes envoyées à l’aide du service jusqu’à ce qu’il soit défini sur false.

Notes

Cette propriété n’est pas disponible dans le Dataverse.Client.ServiceClient, mais le reste dans les méthodes Dataverse.Client.Extensions.CRUDExtentions.

Plus d’informations : Contourner la logique synchrone

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é).