Erstellen Sie elastische Tabellen mit Code

Indem Sie Power Apps verwenden, können Sie elastische Tabellen erstellen und bearbeiten, ohne Code zu schreiben.

Aber manchmal ist es nützlich, Tabellendefinitionen mit Code zu erstellen und zu aktualisieren. Die folgenden Beispiele zeigen die Verwendung von Dataverse SDK für .NET und Web-API zum Erstellen einer neuen elastischen Tabelle mit dem Schemanamen contoso_SensorData. Verwenden Sie die Eigenschaft EntityMetadata.TableType mit einem Wert von Elastic, um eine elastische Tabelle mit Code zu erstellen. Wenn Sie TableType nicht festlegen, wird der Standardwert Standard verwendet und eine Standardtabelle erstellt.

public static CreateEntityResponse CreateElasticTable(IOrganizationService service)
{
    var request = new CreateEntityRequest
    {
        // Define table properties
        Entity = new EntityMetadata
        {
            SchemaName = "contoso_SensorData",
            DisplayName = new Label("SensorData", 1033),
            DisplayCollectionName = new Label("SensorData", 1033),
            Description = new Label("Stores IoT data emitted from devices", 1033),
            OwnershipType = OwnershipTypes.UserOwned,
            TableType = "Elastic",
            IsActivity = false,
            CanCreateCharts = new Microsoft.Xrm.Sdk.BooleanManagedProperty(false)
        },

        // Define the primary attribute for the entity
        PrimaryAttribute = new StringAttributeMetadata
        {
            SchemaName = "contoso_SensorType",
            RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
            MaxLength = 100,
            FormatName = StringFormatName.Text,
            DisplayName = new Label("Sensor Type", 1033),
            Description = new Label("Type of sensor emitting data", 1033)
        }

    };
    return (CreateEntityResponse)service.Execute(request);
}

CreateEntityResponse hat diese Eigenschaften:

  • AttributeId: Die ID der Zeichenfolge der Spalte contoso_SensorType für den Primärnamen.
  • EntityId: Die ID der Tabelle contoso_SensorData.

Erfahren Sie mehr über das Erstellen benutzerdefinierter Tabellen mit dem SDK für .NET.

Spalten hinzufügen

Indem Sie Power Apps verwenden, können Sie Spalten in elastischen Tabellen erstellen, ohne Code zu schreiben.

Sie können Spalten auch mithilfe des SDK oder der Web-API erstellen. Es gibt jedoch Einschränkungen hinsichtlich der Spaltentypen, die Sie hinzufügen können. Zurzeit können Sie die folgenden Typen von Spalten nicht hinzufügen:

  • Geld (MoneyAttributeMetadata)
  • MultiSelectPicklist (MultiSelectPicklistAttributeMetadata)
  • Status (StateAttributeMetadata)
  • Status (StatusAttributeMetadata)
  • Image (ImageAttributeMetadata)
  • Berechnete Spalten, Rollup-Spalten oder Formelspalten

Elastische Tabellen unterstützen Zeichenfolgen-Spalten, die JSON-Daten (JavaScript Object Notation) speichern.

Erstellen Sie eine Spalte im JSON-Format

Dieses Beispiel erstellt eine Zeichenfolgen-Spalte contoso_SensorValue mit JSON-Format in der elastischen Tabelle contoso_SensorData. In Fällen, in denen eine große Menge an JSON-Daten gespeichert werden muss, können Sie den Spaltentyp MemoAttributeMetadata mit JSON-Format anstatt dem StringAttributeMetadata-Spaltentyp verwenden.

Diese Funktion erstellt eine StringAttributeMetadata-Spalte mithilfe der CreateAttributeRequest-Klasse.

public static Guid CreateJsonAttribute(IOrganizationService service)
{
    var request = new CreateAttributeRequest
    {
        EntityName = "contoso_sensordata",
        Attribute = new StringAttributeMetadata
        {
            SchemaName = "contoso_EnergyConsumption",
            RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
            MaxLength = 1000,
            FormatName = StringFormatName.Json,
            DisplayName = new Label("Energy Consumption", 1033),
            Description = new Label("Contains information about energy consumed by the IoT devices", 1033)
        },
        SolutionUniqueName  = "examplesolution"
    };

    var response = (CreateAttributeResponse)service.Execute(request);

    return response.AttributeId;
}

Weitere Informationen finden Sie unter Hinzufügen einer Zeichenfolgenspalte zur benutzerdefinierten Tabelle.

Alternativschlüssel

Für elastische Tabellen können Sie keine angepassten alternativen Schlüssel erstellen.

Jede elastische Tabelle wird mit einem Alternativschlüssel erstellt, der diese Werte verwendet:

  • Anzeigename: Entitätsschlüssel für NoSql-Entität, die die Attribute PrimaryKey und PartitionId enthält
  • Name: KeyForNoSqlEntityWithPKPartitionId
  • LogicalName: keyfornosqlentitywithpkpartitionid

Dieser Alternativschlüssel hat die Schlüsselwerte <table primary key name> und partitionid.

Wenn Sie auf einen Datensatz verweisen müssen, wo ein partitionid-Wert festgelegt ist, können Sie ihn mit diesem Alternativschlüssel referenzieren.

Erfahren Sie, wie Sie mit einem Alternativschlüssel auf einen Datensatz verweisen.

Hinzufügen von Beziehungen

Dataverse unterstützt derzeit nicht das Erstellen von Viele-zu-Viele-Beziehungen mit elastischen Tabellen.

Für elastische Tabellen werden 1:n-Beziehungen mit den folgenden Einschränkungen unterstützt:

  • Kaskadierung wird nicht unterstützt. Das kaskadierende Verhalten muss auf Cascade.None festgelegt werden, wenn die Beziehung erstellt wird.

  • Formatierte Werte für Nachschlagefelder werden nicht zurückgegeben, wenn die folgenden Bedingungen wahr sind:

    • Die abgerufene Tabelle ist eine Standardtabelle und das Nachschlagefeld verweist auf eine elastische Tabelle.
    • Sie verwenden einen partitionid-Wert für eine benutzerdefinierte elastische Tabelle. Mit anderen Worten: Der partitionid-Wert ist auf einen anderen Wert als den Standardwert (null) gesetzt. Erfahren Sie, wie Sie einen partitionid-Wert auswählen.

Elastische Tabellen unterstützen 1:n-Beziehungen, und beim Abrufen eines Datensatzes können verwandte Zeilen abgerufen werden. Verwandte Datensätze können nicht in eine Abfrage einbezogen werden. Erfahren Sie, wie Sie verwandte Zeilen in einer Abfrage zurückgeben.

Spalte „Partitionid-Wert“ in der verweisenden Tabelle

Wenn Sie eine n:1-Beziehung für eine Tabelle erstellen, die auf eine elastische Tabelle verweist, wird erwartungsgemäß eine Nachschlagespalte in der verweisenden Tabelle erstellt.

Außerdem wird eine Zeichenfolgespalte nach der Namenskonvention <lookup name>pid erstellt. In dieser Spalte wird der partitionid-Wert für den zugehörigen Datensatz der elastischen Tabelle gespeichert.

Der <lookup name>pid-Spaltenwert wird automatisch festgelegt, wenn Sie zum Festlegen der Nachschlagespalte den Alternativschlüssel der elastischen Tabelle verwenden. Weitere Informationen zum Verknüpfen von Datensätzen aus elastischen Tabellen

Wenn Sie für Ihre elastische Tabelle keine Partitionierungsstrategie verwenden, beträgt der Wert für die <lookup name>pid-Spalte null, und Sie sollten ihn nicht mehr ändern, nachdem der Datensatz erstellt wurde.

Wenn Sie für Ihre elastische Tabelle eine Partitionierungsstrategie verwenden und den zugehörigen Datensatz der elastischen Tabelle abrufen möchten, können Sie sich nicht allein auf den Wert der Nachschlagespalte verlassen. Sie müssen auch den partitionid-Wert aus der <lookup name>pid-Spalte hinzufügen, um die zugehörige Tabelle eindeutig zu identifizieren. Weitere Informationen zu Partitioning und horizontale Skalierung

Nächste Schritte,

Siehe auch

Elastische Tabellen für Entwickler
Abfrage von JSON-Spalten in elastischen Tabellen
Nachrichten für Massenvorgänge verwenden
Beispielcode für elastische Tabellen