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 :
- Utilisez les messages avec le SDK pour .NET
- Considérons les exemples ci-dessous
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 :
- Créez une table personnalisée à l’aide du code
- Créer et mettre à jour les définitions de table à l’aide de l’API web
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 :
- Détecter les données en double à l’aide du SDK pour .NET
- Détecter les données en double à l’aide de l’API Web
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.
- En savoir plus sur l’utilisation des clés secondaires avec les tables élastiques
- En savoir plus sur la spécification d’un partitionid
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é).