Creación y actualización de definiciones de tabla mediante la API web

Aprenda a crear y actualizar definiciones de tabla de Dataverse mediante la API web, incluido cómo definir una columna de nombre principal, conservar etiquetas localizadas y publicar cambios en los metadatos. Puede realizar las mismas operaciones mediante el SDK para .NET. El SDK de Dataverse para Python usa la API web.

Para obtener más información sobre las propiedades de definición de tabla, consulte Personalización de definiciones de tabla y EntityMetadata EntityType.

Sugerencia

Las entidades, los atributos y los conjuntos de opciones globales (también conocidos como tablas, columnas y opciones) son todos los componentes de la solución. Al crearlos, puede asociarlos a una solución mediante el MSCRM.SolutionUniqueName encabezado de solicitud opcional y establecer el valor en el nombre único de la solución de la que debe formar parte. Obtenga información sobre cómo asociar un componente de solución a una solución

Creación de definiciones de tabla

Para crear una definición de tabla, POST la representación JSON de EntityMetadata en la ruta de acceso del EntityDefinitions conjunto de entidades. La entidad debe incluir la definición de la columna de nombre principal en la Attributes propiedad de navegación con valores de colección. No es necesario establecer valores para todas las propiedades. Los elementos de esta lista, excepto para Description, son necesarios. Establecer una descripción es un procedimiento recomendado. Los valores de propiedad que no especifique se establecen en valores predeterminados. Para comprender los valores predeterminados, consulte el ejemplo de la sección Actualizar definiciones de tabla . En el ejemplo de este artículo se usan las siguientes propiedades de entidad.

Propiedades de tabla necesarias

En esta tabla se enumeran las propiedades que deben tener valores al crear una definición de tabla.

Propiedad EntityMetadata Ejemplo de valor
SchemaName new_BankAccount
Nota: Incluya el prefijo de personalización que coincida con el publicador de soluciones. El valor por defecto es new_. Elija el prefijo que funciona para la solución porque no puede cambiarlo más adelante.
DisplayName Bank Account
DisplayCollectionName Bank Accounts
Description Contains data about customer bank accounts.|
OwnershipType UserOwned | OrganizationOwned
Nota: Para conocer los valores que puede establecer aquí, consulte OwnershipTypes EnumType.
IsActivity false
HasActivities false
HasNotes false

Además de las propiedades enumeradas anteriormente, la EntityMetadata.Attributes propiedad debe contener una matriz que incluya un StringAttributeMetadata EntityType para representar el atributo de nombre principal de la entidad. La propiedad de atributo AttributeMetadata.IsPrimaryName debe ser true. En la tabla siguiente se describen las propiedades establecidas en el ejemplo.

Propiedad del atributo primario Ejemplo de valor
SchemaName new_AccountName
RequiredLevel None
Nota: Se trata de un tipo complejo. Para conocer los valores que puede establecer aquí, consulte AttributeRequiredLevelManagedProperty complex type y AttributeRequiredLevel EnumType.
MaxLength 100
FormatName Text
Nota: El atributo de nombre principal debe usar el formato Text. Para ver las opciones de formato disponibles para otros atributos de cadena, consulte Formatos de cadena.
DisplayName Account Name
Description Type the name of the bank account.
IsPrimaryName true

Nota:

Al crear o actualizar etiquetas mediante el tipo complejo Label, establezca solo la LocalizedLabels propiedad . El UserLocalizedLabel valor devuelto se basa en la preferencia de idioma del usuario y es de solo lectura.

En el ejemplo siguiente se muestra la creación de una tabla personalizada con el conjunto de propiedades. El idioma es inglés mediante el identificador 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
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  
  }  
 ]
}  

Respuesta:

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

Actualizar definiciones de tabla

Importante

No se puede usar el PATCH método para actualizar las entidades del modelo de datos. Las definiciones de tabla tienen paridad con el SDK para la clase UpdateEntityRequest de .NET, reemplazando la definición de entidad con la incluida. Por lo tanto, debe usar el PUT método al actualizar las entidades del modelo de datos y tener cuidado de incluir todas las propiedades existentes que no pretende cambiar. No se pueden actualizar propiedades individuales.

Al actualizar las definiciones de tabla con etiquetas, incluya un encabezado de solicitud personalizado MSCRM.MergeLabels para controlar cómo se controlan las etiquetas de la actualización. Si una etiqueta de un elemento ya tiene etiquetas para otros idiomas y la actualiza con una etiqueta que contiene solo una etiqueta para un idioma específico, el MSCRM.MergeLabels encabezado controla si se sobrescriben las etiquetas existentes o se combina la nueva etiqueta con cualquier etiqueta de idioma existente. Establézcalo MSCRM.MergeLabels en true para asegurarse de que las nuevas etiquetas solo sobrescriben las etiquetas existentes cuando coincide el código de idioma. Si desea sobrescribir las etiquetas existentes para incluir solo las etiquetas que usted especifique, establezca MSCRM.MergeLabels en false. Más información sobre los encabezados de solicitud admitidos

Importante

Si no incluye un MSCRM.MergeLabels encabezado, el comportamiento predeterminado es como si el valor fuera false y la actualización quita cualquier otra etiqueta localizada.

Al actualizar una definición de tabla o columna, use la acción PublishXml antes de aplicar los cambios que realice a las aplicaciones controladas por modelos. Consulte Publicar personalizaciones para obtener más información.

Normalmente, se recupera la definición JSON de la definición de tabla o columna y se modifican las propiedades antes de devolverlas. En el ejemplo siguiente se incluyen todas las propiedades de definición de la tabla creada en el ejemplo Crear definiciones de tabla , pero con el DisplayName modificado a "Bank Business Name". Tenga en cuenta cómo los datos JSON incluyen los valores predeterminados para las propiedades que no se establecen en el ejemplo Crear definiciones de tabla .

Nota:

En este ejemplo se usa la LogicalName clave para identificar de forma única la definición de tabla que se está actualizando. También puede usar el valor de MetadataId clave principal. Esta opción suele ser más fácil que buscar el MetadataId valor. Para obtener más información, vea Recuperar definiciones de tabla por nombre o MetadataId.

Solicitud:

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  
}  

Respuesta:

HTTP/1.1 204 No Content  
OData-Version: 4.0  

Consulte también

Uso de la API web con metadatos de Microsoft Dataverse
Creación y actualización de definiciones de columna mediante la API web
Consultar definiciones de tabla con la API web
Recuperar definiciones de tabla por nombre o MetadataId
Modelar relaciones de tabla mediante la API web
Trabajar con definiciones de tabla mediante el 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#)