Créer et mettre à jour les définitions de table à l’aide de l’API web
Vous pouvez exécuter les opérations sur les définitions de table en utilisant l’API web de la même manière qu’avec le SDK pour .NET. Cet article aborde l’utilisation des définitions de table (métadonnées) à l’aide de l’API Web. Pour obtenir des détails sur les propriétés de définition de table, voir Personnaliser les définitions de table et EntityMetadata EntityType.
Conseil
Les entités, les attributs et les ensembles d’options globaux (également appelés tables, colonnes et choix) sont tous des composants de la solution. Lorsque vous les créez, vous pouvez les associer à une solution en utilisant l’en-tête de demande MSCRM.SolutionUniqueName
et en définissant la valeur sur le nom unique de la solution dont elle doit faire partie.
Créer des définitions de table
Pour créer une définition de table, utilisez la représentation POST
et JSON des données de définition d’entité dans le chemin d’accès à l’ensemble d’entités EntityDefinitions
. L’entité doit inclure la définition de l’attribut de nom principal. Vous n’avez pas besoin de définir les valeurs pour toutes les propriétés. Les éléments de cette liste à l’exception de Description sont obligatoires, bien que la définition d’une description soit recommandée. Les valeurs de propriété que vous ne spécifiez pas seront définies par les valeurs par défaut. Pour comprendre les valeurs par défaut, regardez 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é EntityMetadata | active |
---|---|
SchemaName |
new_BankAccount Remarque : vous devez inclure le préfixe de personnalisation qui correspond à l’éditeur de solutions. Ici la valeur par défaut utilisée est "nouveau" mais vous devez choisir le préfixe qui fonctionne pour votre solution. |
DisplayName |
Compte bancaire |
DisplayCollectionName |
Comptes bancaires |
Description |
Une entité pour stocker des informations sur les comptes bancaires des clients. |
OwnershipType |
UserOwned Remarque : pour les valeurs que vous pouvez définir ici, voir OwnershipTypes EnumType. |
IsActivity |
faux |
HasActivities |
faux |
HasNotes |
faux |
Outre les propriétés répertoriées précédemment, la propriété EntityMetadataAttributes
doit contenir un tableau qui inclut un StringAttributeMetadata EntityType pour représenter l’attribut du nom principal pour l’entité. La propriété IsPrimaryName
de l’attribut doit être true. Le tableau suivant décrit les propriétés définies dans l’exemple.
Propriété de l’attribut principal | active |
---|---|
SchemaName |
new_AccountName |
RequiredLevel |
None Remarque : Pour les valeurs que vous pouvez définir ici, voir AttributeRequiredLevelManagedProperty ComplexType et AttributeRequiredLevel EnumType. |
MaxLength |
100 |
FormatName |
Text Remarque : l’attribut de nom principal doit utiliser le format Texte. Pour les options de format disponibles pour d’autres attributs de chaîne, voir Formats de chaîne. |
DisplayName |
Nom du compte |
Description |
Tapez le nom du compte bancaire. |
IsPrimaryName |
true |
Notes
Lorsque vous créez ou mettez à jour les Étiquettes à l’aide de Étiquette ComplexType, vous devez uniquement définir la propriété LocalizedLabels
. La valeur UserLocalizedLabel
retournée est basée sur les préférences 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 au moyen de l’ID de paramètres régionaux (LCID) 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).
Demande :
POST [Organization URI]/api/data/v9.2/EntityDefinitions HTTP/1.1
MSCRM.SolutionUniqueName: examplesolution
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
{
"@odata.type": "Microsoft.Dynamics.CRM.EntityMetadata",
"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
}
],
"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",
"SchemaName": "new_BankAccount"
}
Réponse :
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.2/EntityDefinitions(417129e1-207c-e511-80d2-00155d2a68d2)
Mettre à jour des définitions de table
Important
Vous ne pouvez pas utiliser la méthode PATCH
pour mettre à jour les entités du modèle de données. Les définitions de table ont la parité avec la classe UpdateEntityRequest Class du SDK pour .NET qui remplace la définition d’entité par celle incluse.
Par conséquent, vous devez utiliser la méthode PUT
pendant la mise à jour des entités de modèle de données et inclure toutes les propriétés existantes que vous n’avez pas l’intention de modifier.
Vous ne pouvez pas mettre à jour des propriétés individuelles.
Quand vous mettez à jour les définitions de table avec des Étiquettes, vous devez inclure un en-tête de demande MSCRM.MergeLabels
pour contrôler la manière dont les Étiquettes de la mise à jour doivent être gérées. Si une Étiquette pour un élément possède des Étiquettes pour d’autres langues et que vous la mettez à jour avec une Étiquette contenant uniquement une Étiquette pour une langue spécifique, l’en-tête MSCRM.MergeLabels
contrôle s’il doit remplacer les Étiquettes existantes ou fusionner votre nouvelle Étiquette avec les Étiquettes de langue existantes. Lorsque MSCRM.MergeLabels
est défini sur true
, toutes les nouvelles Étiquettes définies remplaceront uniquement les Étiquettes existantes lorsque le code de langue correspond. Si vous souhaitez remplacer les Étiquettes existantes pour inclure uniquement les Étiquettes que vous ajoutez, définissez MSCRM.MergeLabels
sur false
.
Important
Si vous n’incluez pas un en-tête MSCRM.MergeLabels
, le comportement par défaut fait comme si la valeur était false
et les Étiquettes localisées non incluses dans votre mise à jour seront perdues.
Lorsque vous mettez à jour une définition de table ou de colonne, vous devez utiliser l’action PublishXml ou l’action PublishAllXml avant que les modifications que vous apportez soient appliquées à l’application. Pour plus d’informations : Publication des personnalisations
En règle générale, vous récupérez la définition JSON de l’attribut d’entité et vous modifiez les propriétés avant de la renvoyer. L’exemple suivant contient toutes les propriétés de définition de la table créée dans l’exemple Créer des définitions de table, mais avec le DisplayName
modifié en « Bank Business Name ». Il peut être utile de noter que JSON fournit ici les valeurs par défaut pour les propriétés non définies dans l’exemple Créer des définitions de table.
Notes
Certains des exemples ci-dessous utilisent la valeur de la clé primaire MetadataId
. Mais vous pouvez aussi utiliser la clé secondaire LogicalName
pour référencer les entités de schéma. Pour plus d’informations : Récupérer les définitions de table par nom ou MetadataId
Demande :
PUT [Organization URI]/api/data/v9.2/EntityDefinitions(417129e1-207c-e511-80d2-00155d2a68d2) HTTP/1.1
MSCRM.SolutionUniqueName: examplesolution
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
MSCRM.MergeLabels: true
{
"@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": "417129e1-207c-e511-80d2-00155d2a68d2",
"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 colonne à 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èle à l’aide de l’API Web
Utiliser les définitions de table à l’aide du SDK pour .NET
Définition 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#)
Notes
Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)
Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).