Freigeben über


Tabellenzeilen mit dem SDK für .NET erstellen

Dieseser Artikel enthält Beispiele zu später und früherer gebundenen Programmierungsstilen. Weitere Informationen:

Grundlegende Erstellung

Die folgenden Beispiele zeigen, wie Sie eine Tabellenzeile mit dem spät gebundenen und dem früh gebundenen Programmierstil erstellen.

Jedes der Beispiele verwendet eine svc-Variable, die eine Instanz einer Klasse darstellt, die Sie auf der IOrganizationService Benutzeroberfläche implementieren. Weitere Informationen zu Klassen finden Sie unter Organisationsservice-Benutzeroberfläche.

Hinweis

Jede Tabelle hat eine eindeutige Primärschlüsselspalte, die Sie beim Erstellen einer Zeile angeben können. In den meisten Fällen empfiehlt das System, dass Sie diese Option festlegen, da die Werte, die vom System generiert werden, für eine bestmögliche Leistung optimiert werden.

Mit elastischen Tabellen können Sie Datensätze mit doppelten Primärschlüsselwerten und unterschiedlichen partitionid-Werte erstellen. Dieses Muster ist jedoch nicht mit modellgesteuerten oder Canvas-Power Apps kompatibel. Erfahren Sie mehr über das Festlegen des Primärschlüsselwerts mit elastischen Tabellen

Das folgende Bespiel zeigt, wie mit der generierten Entitäts-Klasse ein Firmendatensatz anhand der IOrganizationService.Create-Methode verwendet.

//Use Entity class with entity logical name
var account = new Entity("account");

// set attribute values
    // string primary name
    account["name"] = "Contoso";
    // Boolean (Two option)
    account["creditonhold"] = false;
    // DateTime
    account["lastonholdtime"] = new DateTime(2017, 1, 1);
    // Double
    account["address1_latitude"] = 47.642311;
    account["address1_longitude"] = -122.136841;
    // Int
    account["numberofemployees"] = 500;
    // Money
    account["revenue"] = new Money(new decimal(5000000.00));
    // Picklist (Option set)
    account["accountcategorycode"] = new OptionSetValue(1); //Preferred customer

//Create the account
Guid accountid = svc.Create(account);

Die CreateRequest-Klasse nutzen

Anstatt die IOrganizationService.Create-Methode zu nutzen, können Sie entweder die späte Entitätsklasse oder die früh gebundenen generierten Entitätsklassen mit dem CreateRequest nutzen, indem Sie die Entitätsinstanz auf CreateRequest.Target-Eigenschaft festlegen und dann IOrganizationService.Execute-Methode zu nutzen, um ein CreateResponse Beispiel zu erhalten. Die ID der erstellten Kontotabellenzeile ist im CreateResponse.id property-Wert enthalten.

var request = new CreateRequest() { Target = account };
var response  = (CreateResponse)svc.Execute(request);
Guid accountid = response.id;

Wenn die CreateRequest-Klasse verwendet werden soll

Sie müssen die CreateRequest-Klasse verwenden, wenn Sie optionale Parameter behalten möchten. Es gibt zwei Fälle, in denen Sie möglicherweise bestimmte Parameter brauchen.

CreateMultipleRequest-Klasse verwenden

Wenn Sie mehrere Datensätze desselben Typs erstellen müssen, ist die CreateMultipleRequest-Klasse der leistungsstärkste Weg. Weitere Informationen: Nachrichten zu Massenvorgängen

Für Standardtabellen, wenn Sie eine neue Tabellenzeile erstellen, können Sie im selben Vorgang auch verwandte Zeilen erstellen. Dies wird tiefes Einfügen genannt.

Die folgenden Beispiele später und früher Bindungen erstellen eine Firma und einen Kontakt der mit der Firma mithilfe des Kontakts account_primary_contact in einer 1: n-Beziehung steht, in der die Firma primarycontactid und Suche ReferencingAttribute ist.

Die Beispiele erstellen außerdem drei verwandte Zeilen Aufgabe unter Verwendung der 1:n-Beziehung von Konto Account_Tasks, in der die Suche Aufgabe regardingobjectid ReferencingAttribute ist.

Im spät gebundenen Stil müssen Sie explizit eine oder mehrere verwandte Entitäten (Zeilen) zu einer EntityCollection hinzufügen und dann die Beziehungsklasse verwenden, um die Beziehung zu definieren, die SchemaName verwendet, bevor Sie diese der Entity.RelatedEntities Eigenschaft hinzufügen können.

// Use Entity class with entity logical name
var account = new Entity("account");

// Set attribute values
    // string primary name
    account["name"] = "Sample Account";

// Create Primary contact
var primaryContact = new Entity("contact");
primaryContact["firstname"] = "John";
primaryContact["lastname"] = "Smith";

// Add the contact to an EntityCollection
EntityCollection primaryContactCollection = new EntityCollection();
primaryContactCollection.Entities.Add(primaryContact);

// Set the value to the relationship
account.RelatedEntities[new Relationship("account_primary_contact")] = primaryContactCollection;

// Add related tasks to create
var taskList = new List<Entity>() {
            new Entity("task") { ["subject"] = "Task 1" },
            new Entity("task") { ["subject"] = "Task 2" },
            new Entity("task") { ["subject"] = "Task 3" }
        };

// Add the tasks to an EntityCollection
EntityCollection tasks = new EntityCollection(taskList);

// Set the value to the relationship
account.RelatedEntities[new Relationship("Account_Tasks")] = tasks;

// Create the account
Guid accountid = svc.Create(account);

Tabellenzeilen bei der Erstellung zuordnen

Sie können jede neue Zeile einer bereits vorhandenen Zeile zuordnen, wenn Sie sie auf die gleiche Weise wie beim Aktualisieren erstellen. Sie müssen eine EntityReference verwenden, um den Wert einer Nachschlagespalte (Attribut) festzulegen.

Diese Nachschlagezuweisung ist für früh und spät gebundene Stile gleich.

//Use Entity class with entity logical name
var account = new Entity("account");

// set attribute values
    //string primary name
    account["name"] = "Sample Account";

Guid primarycontactid = new Guid("e6fa5509-2582-e811-a95e-000d3af40ae7");

account["primarycontactid"] = new EntityReference("contact", primarycontactid);

//Create the account
Guid accountid = svc.Create(account);

Alternativschlüssel verwenden

Wenn Sie die ID der Tabellenzeile nicht kennen und die folgenden Bedingungen zutreffen:

  • Sie haben Alternativschlüssel für die Tabelle konfiguriert.
  • Sie kennen die Schlüsselwerte

Sie können die anderen Konstruktoren EntityReference mit den Parametern keyName und keyValue verwenden.

account["primarycontactid"] = new EntityReference("contact", "sample_username", "john.smith123");

Hinweis

Alternativschlüssel werden in der Regel nur für Datenenintegrationsszenarien verwendet

Weitere Informationen:

Nach doppelten Datensätzen suchen

Weitere Informationen: Erkennen von doppelten Daten mit dem SDK für .NET

Festlegen von Standardwerten aus der primären Tabellenzeile

Wenn Personen in der Anwendung neue Zeilen erstellen, werden sie oft im Kontext einer anderen Zeile erstellt. Sie können beispielsweise im Kontext eines Kontos eine neue Kontaktzeile erstellen. Dabei werden bestimmte Spaltenwerte aus dem Konto in das Kontaktformular kopiert. Dadurch wird die Erstellung der neuen zugehörigen Zeile beschleunigt, da für die neue Zeile einige Standardwerte festgelegt werden, sodass die Person, die die zu erstellende Zeile bearbeitet, diese Werte nicht eingeben muss. Sie können die Werte ändern, wenn Sie dies möchten, vor dem Speichern.

Die Werte, die beim Erstellen einer neuen Zeile auf diese Weise kopiert werden, werden durch die Konfigurationen gesteuert, die auf die Microsoft Dataverse-Umgebung angewendet werden, sodass es zwischen Umgebungen Unterschiede geben kann.

Weitere Informationen:

Als Entwickler können Sie die InitializeFromRequest-Klasse verwenden, um eine Entität mit diesen Standardwerten zu generieren.

Der folgende Code erstellt einen neuen Kontakt, der einer vorhandenen Firma zugeordnet ist. Der Kontakt ist mit dem angegebenen Konto verknüpft und bestimmte Attributwerte werden standardmäßig festgelegt, wie z. B. Telephone1 und verschiedene Adressenwerten, die von Konto und Kontakt gemeinsam genutzt werden.

//The account that the contact will be associated with:
var parentAccount = new EntityReference("account", new Guid("a976763a-ba1c-e811-a954-000d3af451d6"));

// Initialize a new contact entity with default values from the account.
var request = new InitializeFromRequest()
{
    EntityMoniker = parentAccount,
    TargetEntityName = "contact"

};

var response = (InitializeFromResponse)svc.Execute(request);
//Get the Entity from the response
Entity contact = response.Entity;

// Set values that are not from the account
contact["firstname"] = "Joe";
contact["lastname"] = "Smith";

// Create the contact
Guid contactid = svc.Create(contact);

Verwendung von Upsert

Eine andere Möglichkeit, eine Tabellenzeile zu erstellen, ist die UpsertRequest-Klasse. Ein Upsert erstellt eine neue Zeile, wenn keine Zeile vorhanden ist, die die eindeutigen Bezeichner enthält, die in der mit der Anfrage übergebenen Zeile enthalten sind.

Weitere Informationen: Upsert verwenden

Erstellen Sie Dokumente in Speicherpartitionen

Wenn Sie eine Vielzahl von elastischen Tabellenzeilen erstellen, die nicht relationale Daten enthalten, können Sie die Zeilen in Speicherpartitionen erstellen, um den Zugriff auf diese Zeilen zu beschleunigen. Weitere Informationen: Partitioning und horizontale Skalierung

Siehe auch

Abrufen von Tabellenzeilen mithilfe des SDK für .NET
Aktualisieren und Löschen von Tabellenzeilen über das SDK für .NET
Zuordnen und Aufheben der Zuordnung von Tabellenzeilen über das SDK für .NET

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