Créer et mettre à jour des définitions de table à l’aide de l’API web

Découvrez comment créer et mettre à jour des définitions de table Dataverse à l’aide de l’API Web, notamment comment définir une colonne de nom principal, conserver des étiquettes localisées et publier des modifications de métadonnées. Vous pouvez effectuer les mêmes opérations à l’aide du Kit de développement logiciel (SDK) pour .NET. Le Kit de développement logiciel (SDK) Dataverse pour Python utilise l’API web.

Pour plus d’informations sur les propriétés de définition de table, consultez Personnaliser les définitions de table et EntityMetadata EntityType.

Conseil / Astuce

Les entités, les attributs et les ensembles d’options globaux (également appelés tables, colonnes et choix) sont tous les composants de solution. Lorsque vous les créez, vous pouvez les associer à une solution à l’aide de l’en-tête MSCRM.SolutionUniqueName de demande facultatif et définir la valeur sur le nom unique de la solution dont elle doit faire partie. Découvrez comment associer un composant de solution à une solution

Créer des définitions de table

Pour créer une définition de table, POST représentation JSON de EntityMetadata sur le chemin d’accès du EntityDefinitions jeu d’entités. L’entité doit inclure la définition de la colonne de nom principal dans la propriété de Attributes navigation à valeur de collection. Vous n’avez pas besoin de définir des valeurs pour toutes les propriétés. Les éléments de cette liste, à l’exception des Descriptionéléments requis, sont obligatoires. La définition d’une description est une bonne pratique recommandée. Les valeurs de propriété que vous ne spécifiez pas sont définies sur les valeurs par défaut. Pour comprendre les valeurs par défaut, consultez l’exemple dans la section Mettre à jour les définitions de table . L’exemple de cet article utilise les propriétés d’entité suivantes.

Propriétés de table requises

Ce tableau répertorie les propriétés qui doivent avoir des valeurs lors de la création d’une définition de table.

Propriété EntityMetadata Exemple de valeur
SchemaName new_BankAccount
Remarque : Incluez le préfixe de personnalisation qui correspond à l’éditeur de solution. La valeur par défaut est new_. Choisissez le préfixe qui fonctionne pour votre solution, car vous ne pouvez pas le modifier ultérieurement.
DisplayName Bank Account
DisplayCollectionName Bank Accounts
Description Contains data about customer bank accounts.|
OwnershipType UserOwned | OrganizationOwned
Remarque : Pour connaître les valeurs que vous pouvez définir ici, consultez PropriétéTypes EnumType.
IsActivity false
HasActivities false
HasNotes false

Outre les propriétés répertoriées précédemment, la EntityMetadata.Attributes propriété doit contenir un tableau qui inclut un EntityType StringAttributeMetadata pour représenter l’attribut de nom principal de l’entité. La propriété d’attribut AttributeMetadata.IsPrimaryName doit être true. Le tableau suivant décrit les propriétés définies dans l’exemple.

Propriété d’attribut principal Exemple de valeur
SchemaName new_AccountName
RequiredLevel None
Remarque : Il s’agit d’un type complexe. Pour connaître les valeurs que vous pouvez définir ici, consultez le type complexe AttributeRequiredLevelManagedProperty et AttributeRequiredLevel EnumType.
MaxLength 100
FormatName Text
Note: L’attribut de nom principal doit utiliser le format Texte. Pour connaître les options de format disponibles pour d’autres attributs de chaîne, consultez Formats de chaîne.
DisplayName Account Name
Description Type the name of the bank account.
IsPrimaryName true

Note

Lorsque vous créez ou mettez à jour des étiquettes à l’aide du type complexe Label, définissez uniquement la LocalizedLabels propriété. La UserLocalizedLabel valeur retournée est basée sur la préférence de langue de l’utilisateur et est en lecture seule.

L'exemple suivant montre la création d'une table personnalisée avec les propriétés définies. La langue est l’anglais à l’aide de l’ID de paramètres régionaux (LCID) de 1033. Les valeurs d’ID de paramètres régionaux valides sont disponibles sur la page Tableau des ID de paramètres régionaux (LCID).

Requête :

POST [Organization URI]/api/data/v9.2/EntityDefinitions HTTP/1.1
Accept: application/json  
Content-Type: application/json; charset=utf-8  
OData-MaxVersion: 4.0  
OData-Version: 4.0  
MSCRM.SolutionUniqueName: examplesolution
  
{  
  "@odata.type": "Microsoft.Dynamics.CRM.EntityMetadata",  
  "SchemaName": "new_BankAccount",  
  "Description": {  
   "@odata.type": "Microsoft.Dynamics.CRM.Label",  
  "LocalizedLabels": [  
   {  
    "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",  
    "Label": "An entity to store information about customer bank accounts",  
    "LanguageCode": 1033  
   }  
  ]  
 },  
 "DisplayCollectionName": {  
   "@odata.type": "Microsoft.Dynamics.CRM.Label",  
  "LocalizedLabels": [  
   {  
     "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",  
    "Label": "Bank Accounts",  
    "LanguageCode": 1033  
   }  
  ]  
 },  
 "DisplayName": {  
   "@odata.type": "Microsoft.Dynamics.CRM.Label",  
  "LocalizedLabels": [  
   {  
     "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",  
    "Label": "Bank Account",  
    "LanguageCode": 1033  
   }  
  ]  
 },  
 "HasActivities": false,  
 "HasNotes": false,  
 "IsActivity": false,  
 "OwnershipType": "UserOwned",  
 "Attributes": [  
  {  
   "AttributeType": "String",  
   "AttributeTypeName": {  
    "Value": "StringType"  
   },  
   "Description": {  
     "@odata.type": "Microsoft.Dynamics.CRM.Label",  
    "LocalizedLabels": [  
     {  
       "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",  
      "Label": "Type the name of the bank account",  
      "LanguageCode": 1033  
     }  
    ]  
   },  
   "DisplayName": {  
     "@odata.type": "Microsoft.Dynamics.CRM.Label",  
    "LocalizedLabels": [  
     {  
       "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",  
      "Label": "Account Name",  
      "LanguageCode": 1033  
     }  
    ]  
   },  
   "IsPrimaryName": true,  
   "RequiredLevel": {  
    "Value": "None",  
    "CanBeChanged": true,  
    "ManagedPropertyLogicalName": "canmodifyrequirementlevelsettings"  
   },  
   "SchemaName": "new_AccountName",  
    "@odata.type": "Microsoft.Dynamics.CRM.StringAttributeMetadata",  
   "FormatName": {  
    "Value": "Text"  
   },  
   "MaxLength": 100  
  }  
 ]
}  

Réponse:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
OData-EntityId: [Organization URI]/api/data/v9.2/EntityDefinitions(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)  

Mettre à jour les définitions de table

Important

Vous ne pouvez pas utiliser la PATCH méthode pour mettre à jour les entités de modèle de données. Les définitions de table ont une parité avec le SDK pour la classe .NET UpdateEntityRequest qui remplace la définition d’entité par celle incluse. Par conséquent, vous devez utiliser la méthode lors de la PUT mise à jour des entités de modèle de données et veillez à inclure toutes les propriétés existantes que vous n’avez pas l’intention de modifier. Vous ne pouvez pas mettre à jour les propriétés individuelles.

Lorsque vous mettez à jour les définitions de table avec des étiquettes, incluez un en-tête de demande personnalisé MSCRM.MergeLabels pour contrôler la façon dont les étiquettes de la mise à jour sont gérées. Si une étiquette pour un élément comporte déjà des étiquettes pour d’autres langues et que vous la mettez à jour avec une étiquette qui contient une seule étiquette pour une langue spécifique, l’en-tête MSCRM.MergeLabels contrôle s’il faut remplacer les étiquettes existantes ou fusionner votre nouvelle étiquette avec des étiquettes de langue existantes. Définissez cette option MSCRM.MergeLabels pour garantir que true les nouvelles étiquettes remplacent uniquement les étiquettes existantes lorsque le code de langue correspond. Si vous souhaitez remplacer les étiquettes existantes pour inclure uniquement vos propres étiquettes, configurez MSCRM.MergeLabels sur false. En savoir plus sur les en-têtes de requête pris en charge

Important

Si vous n’incluez pas d’en-tête MSCRM.MergeLabels , le comportement par défaut est comme si la valeur était false et que votre mise à jour supprime toutes les autres étiquettes localisées.

Lorsque vous mettez à jour une définition de table ou de colonne, utilisez l’action PublishXml avant que les modifications que vous apportez soient appliquées aux applications basées sur des modèles. Pour plus d’informations, voir Publication des personnalisations.

En règle générale, vous récupérez la définition JSON de la définition de table ou de colonne et modifiez les propriétés avant de le renvoyer. L’exemple suivant contient toutes les propriétés de définition de la table créées dans l’exemple Créer des définitions de table , mais avec la DisplayName modification apportée à « Nom commercial de la banque ». Notez comment les données JSON incluent les valeurs par défaut pour les propriétés qui ne sont pas définies dans l’exemple Créer des définitions de table .

Note

Cet exemple utilise la LogicalName clé pour identifier de manière unique la définition de table mise à jour. Vous pouvez également utiliser la MetadataId valeur de clé primaire. Cette option est souvent plus facile que de rechercher la MetadataId valeur. Pour plus d’informations, consultez Récupérer les définitions de table par nom ou MetadataId.

Requête :

PUT [Organization URI]/api/data/v9.2/EntityDefinitions(LogicalName='new_bankaccount') HTTP/1.1
Accept: application/json  
Content-Type: application/json; charset=utf-8  
OData-MaxVersion: 4.0  
OData-Version: 4.0  
MSCRM.MergeLabels: true  
MSCRM.SolutionUniqueName: examplesolution
  
{  
 "@odata.context": "[Organization URI]/api/data/v9.2/$metadata#EntityDefinitions/$entity",  
 "ActivityTypeMask": 0,  
 "AutoRouteToOwnerQueue": false,  
 "CanTriggerWorkflow": true,  
 "Description": {  
  "LocalizedLabels": [  
   {  
    "Label": "An entity to store information about customer bank accounts",  
    "LanguageCode": 1033,  
    "IsManaged": false,  
    "MetadataId": "edc3abd7-c5ae-4822-a3ed-51734fdd0469",  
    "HasChanged": null  
   }  
  ]  
 },  
 "DisplayCollectionName": {  
  "LocalizedLabels": [  
   {  
    "Label": "Bank Accounts",  
    "LanguageCode": 1033,  
    "IsManaged": false,  
    "MetadataId": "7c758e0c-e9cf-4947-93b0-50ec30b20f60",  
    "HasChanged": null  
   }  
  ]  
 },  
 "DisplayName": {  
  "@odata.type": "Microsoft.Dynamics.CRM.Label",  
  "LocalizedLabels": [  
   {  
    "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",  
    "Label": "Bank Business Name",  
    "LanguageCode": 1033  
   }  
  ]  
 },  
 "EntityHelpUrlEnabled": false,  
 "EntityHelpUrl": null,  
 "IsDocumentManagementEnabled": false,  
 "IsOneNoteIntegrationEnabled": false,  
 "IsInteractionCentricEnabled": false,  
 "IsKnowledgeManagementEnabled": false,  
 "AutoCreateAccessTeams": false,  
 "IsActivity": false,  
 "IsActivityParty": false,  
 "IsAuditEnabled": {  
  "Value": false,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canmodifyauditsettings"  
 },  
 "IsAvailableOffline": false,  
 "IsChildEntity": false,  
 "IsAIRUpdated": false,  
 "IsValidForQueue": {  
  "Value": false,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canmodifyqueuesettings"  
 },  
 "IsConnectionsEnabled": {  
  "Value": false,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canmodifyconnectionsettings"  
 },  
 "IconLargeName": null,  
 "IconMediumName": null,  
 "IconSmallName": null,  
 "IsCustomEntity": true,  
 "IsBusinessProcessEnabled": false,  
 "IsCustomizable": {  
  "Value": true,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "iscustomizable"  
 },  
 "IsRenameable": {  
  "Value": true,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "isrenameable"  
 },  
 "IsMappable": {  
  "Value": true,  
  "CanBeChanged": false,  
  "ManagedPropertyLogicalName": "ismappable"  
 },  
 "IsDuplicateDetectionEnabled": {  
  "Value": false,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canmodifyduplicatedetectionsettings"  
 },  
 "CanCreateAttributes": {  
  "Value": true,  
  "CanBeChanged": false,  
  "ManagedPropertyLogicalName": "cancreateattributes"  
 },  
 "CanCreateForms": {  
  "Value": true,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "cancreateforms"  
 },  
 "CanCreateViews": {  
  "Value": true,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "cancreateviews"  
 },  
 "CanCreateCharts": {  
  "Value": true,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "cancreatecharts"  
 },  
 "CanBeRelatedEntityInRelationship": {  
  "Value": true,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canberelatedentityinrelationship"  
 },  
 "CanBePrimaryEntityInRelationship": {  
  "Value": true,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canbeprimaryentityinrelationship"  
 },  
 "CanBeInManyToMany": {  
  "Value": true,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canbeinmanytomany"  
 },  
 "CanEnableSyncToExternalSearchIndex": {  
  "Value": true,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canenablesynctoexternalsearchindex"  
 },  
 "SyncToExternalSearchIndex": false,  
 "CanModifyAdditionalSettings": {  
  "Value": true,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canmodifyadditionalsettings"  
 },  
 "CanChangeHierarchicalRelationship": {  
  "Value": true,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canchangehierarchicalrelationship"  
 },  
 "IsOptimisticConcurrencyEnabled": true,  
 "ChangeTrackingEnabled": false,  
 "IsImportable": true,  
 "IsIntersect": false,  
 "IsMailMergeEnabled": {  
  "Value": true,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canmodifymailmergesettings"  
 },  
 "IsManaged": false,  
 "IsEnabledForCharts": true,  
 "IsEnabledForTrace": false,  
 "IsValidForAdvancedFind": true,  
 "IsVisibleInMobile": {  
  "Value": false,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canmodifymobilevisibility"  
 },  
 "IsVisibleInMobileClient": {  
  "Value": false,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canmodifymobileclientvisibility"  
 },  
 "IsReadOnlyInMobileClient": {  
  "Value": false,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canmodifymobileclientreadonly"  
 },  
 "IsOfflineInMobileClient": {  
  "Value": false,  
  "CanBeChanged": true,  
  "ManagedPropertyLogicalName": "canmodifymobileclientoffline"  
 },  
 "DaysSinceRecordLastModified": 0,  
 "IsReadingPaneEnabled": true,  
 "IsQuickCreateEnabled": false,  
 "LogicalName": "new_bankaccount",  
 "ObjectTypeCode": 10009,  
 "OwnershipType": "UserOwned",  
 "PrimaryNameAttribute": "new_accountname",  
 "PrimaryImageAttribute": null,  
 "PrimaryIdAttribute": "new_bankaccountid",  
 "Privileges": [  
  {  
   "CanBeBasic": true,  
   "CanBeDeep": true,  
   "CanBeGlobal": true,  
   "CanBeLocal": true,  
   "CanBeEntityReference": false,  
   "CanBeParentEntityReference": false,  
   "Name": "prvCreatenew_BankAccount",  
   "PrivilegeId": "d1a8de4b-27df-42e1-bc5c-b863e002b37f",  
   "PrivilegeType": "Create"  
  },  
  {  
   "CanBeBasic": true,  
   "CanBeDeep": true,  
   "CanBeGlobal": true,  
   "CanBeLocal": true,  
   "CanBeEntityReference": false,  
   "CanBeParentEntityReference": false,  
   "Name": "prvReadnew_BankAccount",  
   "PrivilegeId": "726043b1-de2c-487e-9d6d-5629fca2bf22",  
   "PrivilegeType": "Read"  
  },  
  {  
   "CanBeBasic": true,  
   "CanBeDeep": true,  
   "CanBeGlobal": true,  
   "CanBeLocal": true,  
   "CanBeEntityReference": false,  
   "CanBeParentEntityReference": false,  
   "Name": "prvWritenew_BankAccount",  
   "PrivilegeId": "fa50c539-b6c7-4eaf-bd49-fd8224bc51b6",  
   "PrivilegeType": "Write"  
  },  
  {  
   "CanBeBasic": true,  
   "CanBeDeep": true,  
   "CanBeGlobal": true,  
   "CanBeLocal": true,  
   "CanBeEntityReference": false,  
   "CanBeParentEntityReference": false,  
   "Name": "prvDeletenew_BankAccount",  
   "PrivilegeId": "17c1fd6e-f856-45e7-b563-796f53108b85",  
   "PrivilegeType": "Delete"  
  },  
  {  
   "CanBeBasic": true,  
   "CanBeDeep": true,  
   "CanBeGlobal": true,  
   "CanBeLocal": true,  
   "CanBeEntityReference": false,  
   "CanBeParentEntityReference": false,  
   "Name": "prvAssignnew_BankAccount",  
   "PrivilegeId": "133ca81d-668e-4c19-a71e-10c6dfe099cd",  
   "PrivilegeType": "Assign"  
  },  
  {  
   "CanBeBasic": true,  
   "CanBeDeep": true,  
   "CanBeGlobal": true,  
   "CanBeLocal": true,  
   "CanBeEntityReference": false,  
   "CanBeParentEntityReference": false,  
   "Name": "prvSharenew_BankAccount",  
   "PrivilegeId": "15f27df4-9c67-47c9-b1f1-274e1c44f24a",  
   "PrivilegeType": "Share"  
  },  
  {  
   "CanBeBasic": true,  
   "CanBeDeep": true,  
   "CanBeGlobal": true,  
   "CanBeLocal": true,  
   "CanBeEntityReference": false,  
   "CanBeParentEntityReference": false,  
   "Name": "prvAppendnew_BankAccount",  
   "PrivilegeId": "ac8b1920-8f93-4e9d-94e3-c680e2a2f228",  
   "PrivilegeType": "Append"  
  },  
  {  
   "CanBeBasic": true,  
   "CanBeDeep": true,  
   "CanBeGlobal": true,  
   "CanBeLocal": true,  
   "CanBeEntityReference": false,  
   "CanBeParentEntityReference": false,  
   "Name": "prvAppendTonew_BankAccount",  
   "PrivilegeId": "f63a5f46-3bc7-4eac-81d0-7f77f566ef46",  
   "PrivilegeType": "AppendTo"  
  }  
 ],  
 "RecurrenceBaseEntityLogicalName": null,  
 "ReportViewName": "Filterednew_BankAccount",  
 "SchemaName": "new_BankAccount",  
 "IntroducedVersion": "1.0",  
 "IsStateModelAware": true,  
 "EnforceStateTransitions": false,  
 "EntityColor": null,  
 "LogicalCollectionName": "new_bankaccounts",  
 "CollectionSchemaName": "new_BankAccounts",  
 "EntitySetName": "new_bankaccounts",  
 "IsEnabledForExternalChannels": false,  
 "IsPrivate": false,  
 "MetadataId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",  
 "HasChanged": null  
}  

Réponse:

HTTP/1.1 204 No Content  
OData-Version: 4.0  

Voir aussi

Utiliser l’API web avec les métadonnées Microsoft Dataverse
Créer et mettre à jour des définitions de colonnes à l’aide de l’API web
Requête des définitions de table à l’aide de l’API web
Récupérer les définitions de table par nom ou MetadataId
Relations de table de modèles à l’aide de l’API web
Utiliser des définitions de table à l’aide du Kit de développement logiciel (SDK) pour .NET
Définitions de colonne (attribut)
Exemple d’opérations de schéma de table de l’API Web
Exemple d’opérations de schéma de table de l’API Web (C#)