Crear y actualizar definiciones de tabla mediante la API web
Puede realizar las mismas operaciones en las definiciones de tabla utilizando la API web que con el SDK para .NET. Este artículo se centra en el trabajo con definiciones de tablas (metadatos) utilizando la API web. Para encontrar detalles sobre las propiedades de definición de la tabla, consulte Personalizar las definiciones de las tablas y EntityMetadata EntityType.
Sugerencia
Las entidades, los atributos y los conjuntos de opciones globales (también conocidos como tablas, columnas y opciones) son todos componentes de la solución. Cuando se crean puede asociarlos a una solución utilizando el encabezado de solicitud MSCRM.SolutionUniqueName
y estableciendo un valor en el nombre único de la solución de la que debe formar parte.
Crear definiciones de
Para crear una definición de tabla, POST
la representación JSON de los datos de definición de entidad en la ruta establecida de la entidad EntityDefinitions
. La entidad debe incluir la definición para el atributo de nombre principal. No necesita establecer valores para todas las propiedades. Se requieren los elementos de la lista excepto Description, aunque se recomienda establecer una descripción. Los valores de propiedad que no especifica se establecen como valores predeterminados. Para comprender los valores predeterminados, consulte el ejemplo en la sección Actualizar definiciones de tabla. El ejemplo en este artículo usa las siguientes propiedades de la entidad.
Propiedad EntityMetadata | valor |
---|---|
SchemaName |
new_BankAccount Nota: Debe incluir el prefijo de personalización que coincida con el editor de soluciones. Aquí se usa el valor predeterminado " new_", pero debe elegir el prefijo que funcione para la solución. |
DisplayName |
Cuenta bancaria |
DisplayCollectionName |
Cuentas bancarias |
Description |
Una entidad para almacenar información acerca de las cuentas bancarias del cliente. |
OwnershipType |
UserOwned Nota: para los valores que puede establecer aquí, consulte OwnershipTypes EnumType. |
IsActivity |
falso |
HasActivities |
falso |
HasNotes |
falso |
Además de las propiedades enumeradas anteriormente, la propiedad EntityMetadataAttributes
debe contener una matriz que incluya un StringAttributeMetadata EntityType para representar el atributo de nombre principal para la entidad. El atributo propiedad IsPrimaryName
debe ser verdadero. En la siguiente tabla se describen las distintas propiedades establecidas en el ejemplo.
Propiedad Atributo principal | valor |
---|---|
SchemaName |
new_AccountName |
RequiredLevel |
None Nota: Para conocer los valores que puede establecer aquí, consulte AttributeRequiredLevelManagedProperty ComplexType y AttributeRequiredLevel EnumType. |
MaxLength |
100 |
FormatName |
Text Nota: el atributo de nombre principal debe usar formato de texto. Para las opciones de formato disponibles para otros atributos de cadena, consulte Formatos de cadena. |
DisplayName |
Nombre de cuenta |
Description |
Escriba el nombre de la cuenta bancaria. |
IsPrimaryName |
true |
Nota
Cuando se crean o se actualizan etiquetas con Label ComplexType, solo debe establecer la propiedad LocalizedLabels
. El valor UserLocalizedLabel
devuelto se basa en la preferencia de idioma del usuario y es de solo lectura.
El siguiente ejemplo muestra la creación de una tabla personalizada con las propiedades establecidas. El idioma es inglés con el Id. de configuración regional (LCID) de 1033. Los valores de identificadores de configuración regional válidos pueden encontrarse en el gráfico de identificadores de configuración regional (LCID).
Solicitud:
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"
}
Respuesta:
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.2/EntityDefinitions(417129e1-207c-e511-80d2-00155d2a68d2)
Actualizar definiciones de tabla
Importante
No puede utilizar el método PATCH
para actualizar las entidades del modelo de datos. Las definiciones de la tabla tienen paridad con el SDK para .NET UpdateEntityRequest Class que reemplaza la definición de entidad con la incluida.
Por lo tanto, debe utilizar el método PUT
al actualizar las entidades del modelo de datos y tener cuidado de incluir todas las propiedades existentes que no tiene la intención de cambiar.
No puede actualizar propiedades individuales.
Cuando actualice las definiciones de tabla con etiquetas, debe incluir un encabezado de solicitud MSCRM.MergeLabels
personalizado para controlar cómo se deben gestionar las etiquetas en la actualización. Si una etiqueta para un elemento tiene etiquetas para otros idiomas y lo actualiza con una etiqueta que contiene sólo una etiqueta para un idioma específico, el encabezado MSCRM.MergeLabels
controla si sobrescribe las etiquetas existentes o combina la nueva etiqueta con etiquetas de idioma existentes. Con MSCRM.MergeLabels
establecido como true
, las etiquetas nuevas definidas solo sobrescribirán las etiquetas existentes cuando el código de idioma coincida. Si desea sobrescribir las etiquetas existentes para incluir solo las etiquetas que incluye, establezca MSCRM.MergeLabels
como false
.
Importante
Si no incluye un encabezado MSCRM.MergeLabels
, el comportamiento predeterminado es como si el valor fuera false
y las etiquetas localizadas no incluidas en la actualización se perderán.
Cuando actualiza la definición de una tabla o columna, debe utilizar PublishXml Action o PublishAllXml Action antes de que los cambios que realice se apliquen a la aplicación. Más información: Publicación de personalizaciones
Normalmente, recupera la definición JSON del atributo de entidad y modificará las propiedades antes de devolverlo. El siguiente ejemplo contiene todas las propiedades de definición de la tabla creada en el ejemplo Crear definiciones de tabla, pero se ha cambiado DisplayName
a "Bank Business Name". Puede ser útil tener en cuenta que JSON aquí proporciona los valores predeterminados para las propiedades que no se establecen en el ejemplo Crear definiciones de tabla.
Nota
Algunos de los ejemplos siguientes utilizan el valor de clave principal MetadataId
. También puede usar la clave alternativa LogicalName
para hacer referencia a entidades de esquema. Más información: Recuperar definiciones de tablas por nombre o MetadataId
Solicitud:
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
}
Respuesta:
HTTP/1.1 204 No Content
OData-Version: 4.0
Consulte también
Usar la API web con metadatos de Microsoft Dataverse
Crear y actualizar definiciones de columna mediante la API web
Consultar definiciones de tabla con la API web
Recuperar definiciones de tablas por nombre o MetadataId
Relaciones de tabla de modelos usando la API web
Trabajar con definiciones de tablas mediante SDK para .NET
Definiciones de columna (atributo)
Ejemplo de operaciones de esquema de tabla de API web
Ejemplo de operaciones de esquema de tabla de API web (C#)
Nota
¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)
La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).