Optionale Parameter verwenden
Dataverse stellt einen Satz optionaler Parameter oder Anforderungsheaderwerte bereit, die ein Entwickler einer Clientanwendung verwenden kann, um das Verhalten einzelner Anforderungen zu ändern. In diesem Artikel werden die Parameterwerte und Anforderungsheader beschrieben, die Sie verwenden können, um die gewünschten Verhaltensweisen zu erhalten.
Hinweis
Dieser Artikel stellt diese Parameter vor, erklärt sie jedoch nicht ausführlich. Bitte folgen Sie den Links für weitere Informationen, um die Szenarien für die Verwendung dieser Parameter vollständig zu verstehen.
Verwendung
Wie Sie diese optionalen Parameter verwenden, hängt davon ab, ob Sie das SDK für .NET oder die Web-API von Dataverse verwenden.
Normalerweise fügen Sie den Parameter der OrganizationRequest.Parameters-Sammlung der benannten Anforderungsklasse hinzu.
Hinweis
Sie können diese Parameter nicht mit den 7 Verknüpfungsmethoden angeben, die mit IOrganizationService verfügbar gemacht werden. Sie müssen die benannte Anforderungsklasse mit der IOrganizationService.Execute-Methode verwenden.
Eine Ausnahme besteht beim Festlegen von partitionid
, dies wird als Attribut der Entitätsinstanz festgelegt. Weitere Informationen: Einen Datenvorgang mit der angegebenen Partition durchführen
Weitere Informationen:
- Nachrichten mit dem SDK für .NET verwenden
- Beispiele hierzu finden Sie weiter unten
Eine Lösungskomponente einer Lösung zuordnen
Wenn Sie Datenvorgänge für eine Lösungskomponente ausführen, können Sie sie einer Lösung zuordnen, indem Sie den eindeutigen Namen der Lösung mit dem Parameter SolutionUniqueName
angeben.
Sie können diesen Parameter mit diesen Nachrichten verwenden:
AddPrivilegesRole
Create
(POST)Delete
(DELETE)MakeAvailableToOrganizationTemplate
Update
(PATCH)
Die folgenden Beispiele erstellen eine Webressourcen-Lösungskomponente und fügen sie der Lösung mit dem eindeutigen Namen ExampleSolution
hinzu.
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);
}
Weitere Informationen:
Weitere Informationen:
- Erstellen einer benutzerdefinierten Tabelle mit Code
- Tabellendefinitionen über die Web-API erstellen und aktualisieren
Duplikaterkennung unterdrücken
Wenn Sie möchten, dass Dataverse einen Fehler auslöst, wenn ein neuer Datensatz, den Sie erstellen, oder ein Datensatz, den Sie aktualisieren, mit den Duplikaterkennungsregeln für einen anderen Datensatz übereinstimmt, müssen Sie die Zeile mithilfe des Parameters SuppressDuplicateDetection
und einem Wert von „false“ erstellen oder aktualisieren.
Die folgenden Beispiele geben einen Fehler zurück, wenn Folgendes zutrifft:
- Die Duplikaterkennung wird für die Umgebung aktiviert, wenn eine Zeile erstellt oder aktualisiert wird.
- Für die
account
-Tabelle ist die Duplikaterkennung aktiviert - Eine Regel zur Duplikaterkennung wird veröffentlicht, die überprüft, ob der Konto-
name
-Wert exakt mit einer vorhandenen Zeile übereinstimmt - Es gibt einen vorhandenes Konto mit dem Namen
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,
};
}
}
Weitere Informationen:
Eine gemeinsam genutzte Variable zum Plug-In-Ausführungskontext hinzufügen
Verwenden Sie den tag
-Parameter, um einen freigegebenen Variablenwert einzuschließen, auf den in einem Plug-In zugegriffen werden kann. Diese zusätzlichen Informationen ermöglichen es einem Plug-In, Logik anzuwenden, die von der Clientanwendung abhängt.
Hinweis
Dieser Parameter ist dafür gedacht, dass Clientanwendungen jeden gewünschten Wert festlegen können. Keine Microsoft-Funktion sollte erfordern, dass Sie einen bestimmten Wert in Ihrem Clientanwendungscode festlegen, um unterschiedliche Verhaltensweisen zu ermöglichen.
Um auf den Wert in einem Plug-In zuzugreifen, verwenden Sie die IExecutionContext.SharedVariables-Auflistung
if (context.SharedVariables.ContainsKey("tag")){
string tagValue = context.SharedVariables["tag"];
}
Die folgenden Beispiele übergeben diesen Wert: A string value
beim Erstellen eines Kontodatensatzes.
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);
}
Weitere Informationen finden Sie unter Gemeinsam genutzte Variablen
Einen Datenvorgang mit der angegebenen Partition durchführen
Wenn Sie elastische Tabellen mit einer Partitioning-Strategie verwenden, können Sie mit dem Parameter partitionid
eine eindeutige Zeichenfolge übergeben, um auf nicht-relationale Tabellendaten innerhalb einer Speicher-Partition zuzugreifen.
Die folgenden Beispiele verwenden den partitionid
-Wert von deviceId
, wenn ein contoso_sensordata
-Datensatz abgerufen wird.
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;
}
Alternativ können Sie den Wert partitionid
mit dem alternativen Schlüsselstil verwenden.
- Erfahren Sie mehr über die Verwendung der Alternativschlüssel mit elastischen Tabellen
- Erfahren Sie mehr über die Angabe einer partitionid
Benutzerdefinierte Dataverse-Logik umgehen
Synchrone Logik muss während der Transaktion angewendet werden und kann die Leistung einzelner Vorgänge erheblich beeinträchtigen. Bei der Durchführung von Massenvorgängen kann die zusätzliche Zeit für diese einzelnen Vorgänge die erforderliche Zeit erhöhen. Verwenden Sie den BypassBusinessLogicExecution
-Parameter, wenn Sie die Leistung beim Ausführen von Massendatenvorgängen verbessern möchten.
Wichtig
Der aufrufende Benutzer muss die Berechtigung prvBypassCustomBusinessLogic
haben.
Das folgende Beispiel legt den optionalen Parameter BypassBusinessLogicExecution
für synchrone und asynchrone benutzerdefinierte Logik beim Erstellen eines neuen Kontodatensatzes mit der SDK für .NET CreateRequest-Klasse fest.
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);
}
Erfahren Sie mehr über Möglichkeiten zum Umgehen benutzerdefinierter Dataverse Logik
Power Automate-Flows umgehen
Wenn Massendatenvorgänge auftreten, die Flows auslösen, erstellt Dataverse Systemaufträge zum Ausführen der Flows. Wenn die Anzahl der Systemaufträge sehr groß ist, kann dies zu Leistungsproblemen für das System führen. In diesem Fall können Sie das Auslösen der Flows umgehen, indem Sie den optionalen Parameter SuppressCallbackRegistrationExpanderJob
verwenden.
Die CallbackRegistration-Tabelle verwaltet Flow-Trigger, und es gibt einen internen Vorgang namens expander, der die registrierten Flow-Trigger aufruft.
Hinweis
Wenn diese Option verwendet wird, erhalten die Flow-Besitzer keine Benachrichtigung, dass ihre Flow-Logik umgangen wurde.
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);
}
Weitere Informationen: Power Automate-Flows umgehen
Siehe auch
Nachrichten mit dem SDK für .NET verwenden
Web-API: HTTP-Anforderungen erstellen und Fehler beheben: Weitere Header
Benutzerdefinierte Geschäftslogik umgehen
Hinweis
Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)
Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).