Partager via


Créer des tables élastiques à l’aide de code

En utilisant Power Apps, vous pouvez créer et modifier des tables élastiques sans écrire de code.

Cependant, il est parfois utile d’utiliser du code pour créer et mettre à jour les définitions de tables. Les exemples suivants montrent comment utiliser le Kit de développement logiciel (SDK) Dataverse pour .NET et l’API web pour créer une nouvelle table élastique portant le nom du schéma contoso_SensorData. Pour créer une table élastique à l’aide du code, utilisez la propriété EntityMetadata.TableType avec une valeur Elastic. Si vous ne définissez pas TableType, la valeur par défaut Standard est utilisée, et une table standard est créée.

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 a les propriétés suivantes :

  • AttributeId : ID de la colonne de chaîne de nom principal contoso_SensorType.
  • EntityId : l’ID de la table contoso_SensorData.

En savoir plus sur la création de tables personnalisées à l’aide du kit de développement logiciel (SDK) pour .NET.

Ajouter des colonnes

En utilisant Power Apps, vous pouvez créer des colonnes dans des tables élastiques sans écrire de code.

Vous pouvez également créer des colonnes à l’aide du kit de développement logiciel (SDK) ou de l’API web. Cependant, les types de colonnes que vous pouvez ajouter sont limités. Actuellement, vous ne pouvez pas ajouter les types de colonnes suivants :

  • Money (MoneyAttributeMetadata)
  • MultiSelectPicklist (MultiSelectPicklistAttributeMetadata)
  • State (StateAttributeMetadata)
  • Status (StatusAttributeMetadata)
  • Image (ImageAttributeMetadata)
  • Colonnes calculées, cumulatives ou de formule

Les tables élastiques prennent en charge les colonnes de chaînes qui stockent des données JSON (JavaScript Object Notation).

Créer une colonne au format JSON

Cet exemple crée une colonne de chaîne contoso_SensorValue au format JSON dans la table élastique contoso_SensorData. Pour les cas où une grande quantité de données JSON doit être stockée, vous pouvez utiliser le type de colonne MemoAttributeMetadata au format JSON au lieu d’utiliser le type de colonne StringAttributeMetadata.

Cette fonction crée une colonne StringAttributeMetadata en utilisant la classe CreateAttributeRequestCreateAttributeRequest.

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;
}

Pour plus d’informations, rendez-vous sur Ajouter une colonne de chaîne à la table personnalisée.

Clés secondaires

Vous ne pouvez pas créer de clés alternatives personnalisées pour les tables élastiques.

Chaque table élastique est créée avec un clé secondaire qui utilise ces valeurs :

  • Nom d’affichage : Clé d’entité pour l’entité NoSql contenant les attributs PrimaryKey et PartitionId
  • Nom: KeyForNoSqlEntityWithPKPartitionId
  • Nom logique : keyfornosqlentitywithpkpartitionid

Ce clé secondaire a les valeurs clés <table primary key name> et partitionid.

Si vous devez référencer un enregistrement où une valeur partitionid est définie, vous pouvez le référencer en utilisant cette clé secondaire.

Découvrez comment utiliser un clé secondaire pour référencer un enregistrement.

Ajout de relations

Dataverse ne prend actuellement pas en charge la création de relations plusieurs à plusieurs avec des tables élastiques.

Les relations un-à-plusieurs sont prises en charge pour les tables élastiques ayant les limitations suivantes :

  • La mise en cascade n’est pas prise en charge. Le comportement de mise en cascade doit être défini sur Cascade.None lors de la création de la relation.

  • Les valeurs mises en forme pour les colonnes de recherche ne sont pas renvoyées lorsque les conditions suivantes sont remplies :

    • La table qui est récupérée est une table standard et la recherche fait référence à une table élastique.
    • Vous utilisez une table élastique personnalisée ayant la valeur partitionid. En d’autres termes, la valeur partitionid est définie sur une valeur différente de la valeur par défaut (nulle). Découvrez comment choisir une valeur partitionid.

Les tables élastiques prennent en charge les relations un-à-plusieurs et les lignes associées peuvent être récupérées lors de la récupération d’un enregistrement. Les enregistrements associés ne peuvent pas être inclus dans une requête. Découvrez comment renvoyer des lignes associées dans une requête.

Colonne de valeur Partitionid de la table de référence

Lorsque vous créez une relation plusieurs-à-un dans une table qui fait référence à une table élastique, une colonne de recherche est créée dans la table de référence comme prévu.

En même temps, une colonne de chaîne est créée et suit cette convention d’affectation de noms <lookup name>pid. Cette colonne stocke la valeur partitionid pour l’enregistrement de la table élastique associée.

La valeur de la colonne <lookup name>pid est définie automatiquement lorsque vous utilisez la clé secondaire de la table élastique pour définir la colonne de recherche. Découvrez comment associer des enregistrements de table élastique

Si vous n’utilisez pas de stratégie de partitionnement pour votre table élastique, la valeur de cette colonne <lookup name>pid est nulle et vous ne devez pas la modifier une fois l’enregistrement créé.

Si vous utilisez une stratégie de partitionnement pour votre table élastique et que vous souhaitez récupérer l’enregistrement de la table élastique associée, vous ne pouvez pas vous baser uniquement sur la valeur de la colonne de recherche. Vous devez également inclure la valeur partitionid de la colonne <lookup name>pid pour identifier de manière unique la table associée. En savoir plus sur le partitionnement et la mise à l’échelle horizontale

Étapes suivantes

Voir aussi

Tables élastiques pour les développeurs
Interroger les colonnes JSON dans les tables élastiques
Utiliser les messages d’opération en bloc
Exemple de code de table élastique