Tabellendefinitionen über die Web-API erstellen und aktualisieren

Sie können dieselben Vorgänge auf Tabellendefinitionen mit der Web-API ausführen, die Sie mithilfe des SDK für .NET ausführen können. Dieser Artikel konzentriert sich auf die Arbeit mit Tabellendefinitionen (Metadaten) unter Verwendung der Web-API. Einzelheiten zu den Eigenschaften der Tabellendefinitionen finden Sie unter Tabellendefinitionen anpassen und EntityMetadata EntityType.

Tipp

Entitäten, Attribute und globale Optionssätze (auch als Tabellen, Spalten und Auswahlmöglichkeiten bezeichnet) sind Lösungskomponenten. Wenn Sie sie erstellen, können Sie sie mithilfe von MSCRM.SolutionUniqueName mit einer Lösung verknüpfen. Fordern Sie den Header an und setzen Sie den Wert auf den eindeutigen Namen der Lösung, zu der er gehören soll.

Tabellendefinitionen erstellen

Um eine Tabellendefinition zu erstellen, POST Sie die JSON-Darstellung der Entitätsdefinitionsdaten an den EntityDefinitions-Entitätssatzpfad. Die Entität muss die Definition für den primären Namen eines Datensatzes enthalten. Sie müssen nicht Werte für alle Eigenschaften festlegen. Die Elemente in der Liste mit Ausnahme von Beschreibung sind erforderlich, obwohl die Festlegung einer Beschreibung eine empfohlene bewährte Methode ist. Eigenschaftswerte, die Sie nicht angeben, werden auf Standardwerte gesetzt. Um die Standardwerte zu verstehen, sehen Sie sich das Beispiel im Abschnitt Aktualisieren Sie die Tabellendefinitionen an. Das Beispiel in diesem Artikel verwendet die folgenden Eigenschaften der Entitäten.

EntityMedatdaten Eigenschaft Wert
SchemaName new_BankAccount Hinweis: Sie sollten das Anpassungspräfix einschließen, das dem Lösungsherausgeber entspricht. Hier wird der Standardwert „new_“ verwendet, aber sie sollten das Präfix auswählen, das für die Lösung funktioniert.
DisplayName Bankkonto
DisplayCollectionName Bankkonten
Description Eine Entität, um Informationen zu Kundenbankkonten zu speichern.
OwnershipType UserOwned Hinweis: Die Werte, die Sie hier einstellen können, finden Sie unter OwnershipTypes EnumType.
IsActivity Falsch
HasActivities Falsch
HasNotes Falsch

Zusätzlich zu den zuvor aufgeführten Eigenschaften muss die Eigenschaft EntityMetadataAttributes ein Array enthalten, das ein StringAttributeMetadata EntityType enthält, um das primäre Namensattribut für die Entität darzustellen. Das Attribut IsPrimaryName-Eigenschaft muss true sein. Die folgende Tabelle beschreibt die im Beispiel festgelegten Eigenschaften.

Primäre Attributeigenschaft Wert
SchemaName new_AccountName
RequiredLevel Nein
Hinweis: Für die Werte, die Sie hier einstellen können, siehe AttributeRequiredLevelManagedProperty ComplexType und AttributeRequiredLevel EnumType.
MaxLength 100
FormatName Text
Hinweis: Das primäre Namensattribut muss das Text-Format verwenden. Formatoptionen für andere Zeichenfolgenattribute finden Sie unter String-Formate.
DisplayName Firmenname
Description Geben Sie den Namen des Bankkontos ein.
IsPrimaryName Wahr

Hinweis

Wenn Sie Labels mit dem Label ComplexType erstellen oder aktualisieren, müssen Sie nur die Eigenschaft LocalizedLabels setzen. Der UserLocalizedLabel-Wert, der zurückgegeben wird, basiert auf der Spracheinstellung des Benutzers und ist schreibgeschützt.

Das folgende Beispiel zeigt die Erstellung einer benutzerdefinierten Tabelle mit den festgelegten Eigenschaften. Die Sprache ist Englisch mit der Gebietsschema-ID (LCID) 1033. Gültige Gebietsschema-ID-Werte finden Sie unter Gebietsschema-ID-Diagramm (LCID).

Anforderung:

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

Antwort:

HTTP/1.1 204 No Content  
OData-Version: 4.0  
OData-EntityId: [Organization URI]/api/data/v9.2/EntityDefinitions(417129e1-207c-e511-80d2-00155d2a68d2)  

Tabellendefinitionen aktualisieren

Wichtig

Sie können die PATCH-Methode nicht zum Aktualisieren von Datenmodellentitäten verwenden. Die Tabellendefinitionen haben Parität mit der UpdateEntityRequest-Klasse von SDK für .NET, die die Definition der Entität durch die enthaltene ersetzt. Daher müssen Sie beim Aktualisieren von Datenmodellentitäten die PUT-Methode verwenden und darauf achten, alle vorhandenen Eigenschaften einzuschließen, die Sie nicht ändern möchten. Sie können keine einzelnen Eigenschaften aktualisieren.

Wenn Sie Tabellendefinitionen mit Beschriftungen aktualisieren, sollten Sie einen benutzerdefinierte MSCRM.MergeLabels-Anforderungsheader hinzufügen, um zu steuern, wie Beschriftungen im Update behandelt werden sollen. Wenn eine Beschriftung für ein Element bereits Bezeichnungen für weitere Sprachen enthält und Sie sie mit einer Beschriftung aktualisieren, die nur eine Beschriftung für eine bestimmte Sprache enthält, steuert die MSCRM.MergeLabels-Kopfzeile, ob die vorhandenen Bezeichnungen überschrieben oder die neuen Bezeichnungen mit den vorhandenen Sprachbeschriftungen zusammengeführt werden sollen. Wenn MSCRM.MergeLabels auf true festgelegt ist, überschreiben alle neuen definierten Beschriftungen nur dann vorhandene Bezeichnungen, wenn der Sprachcode übereinstimmt. Wenn Sie die vorhandenen Bezeichnungen überschreiben möchten, damit Sie nur die von Ihnen eingeschlossenen Bezeichnungen einschließen, legen Sie MSCRM.MergeLabels auf false fest.

Wichtig

Wenn Sie keine MSCRM.MergeLabels-Kopfzeile einschließen, ist das standardmäßige Verhalten so, als ob der Wert false wäre, und alle lokalisierten Bezeichnungen, die nicht in dem Update enthalten sind, gehen verloren.

Wenn Sie eine Tabellen- oder Spaltendefinition aktualisieren, müssen Sie die PublishXml Action oder PublishAllXml Action verwenden, bevor die von Ihnen vorgenommenen Änderungen in die Anwendung übernommen werden. Weitere Informationen: Veröffentlichen von Anpassungen

Normalerweise rufen Sie die JSON-Definition des Entitätsattributs ab und ändern die Eigenschaften, bevor Sie es zurücksenden. Das folgende Beispiel enthält alle Definitionseigenschaften der in der Tabelle erstellten Tabelle Erstellen Sie Tabellendefinitionen aber mit dem DisplayName geändert in „Bank Business Name“. Es kann nützlich sein zu beachten, dass der JSON hier die Standardwerte für Eigenschaften bereitstellt, die nicht im Beispiel Erstellen Sie Tabellendefinitionen festgelegt sind.

Hinweis

Einige der folgenden Beispiele verwenden den MetadataId-Primärschlüsselwert. Sie können zudem den LogicalName-Alternativschlüssel zum Verweisen auf Schemaentitäten verwenden. Weitere Informationen finden Sie unter: Rufen Sie Tabellendefinitionen nach Name oder MetadataId ab

Anforderung:

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  
}  

Antwort:

HTTP/1.1 204 No Content  
OData-Version: 4.0  

Siehe auch

Verwenden der Web-API mit Microsoft Dataverse-Metadaten
Erstellen und Aktualisieren von Spaltendefinitionen mit der Web-API
Abfragen von Tabellendefinitionen mithilfe der Web-API
Rufen Sie Tabellendefinitionen nach Name oder MetadataId ab
Modelltabelle Beziehungen unter Verwendung der Web-API
Arbeiten mit Tabellendefinitionen unter Verwendung des SDK für .NET
Spaltendefinitionen (Attribute)
Beispiel für Web-API-Tabellenschemavorgänge
Beispiel für Web-API-Tabellenschemavorgänge (C#)

Hinweis

Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)

Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).