.NET 用 SDK で実行できる Web API を使用して、テーブル定義に対して同じ操作をすべて実行できます。 この記事では、Web API を使用してテーブル定義 (メタデータ) を操作することに重点を置いています。 テーブル定義プロパティの詳細については、「テーブル定義と EntityMetadata EntityType のカスタマイズ」を参照してください。
ヒント
エンティティ、属性、グローバル オプション セット (テーブル、列、選択肢とも呼ばれます) はすべてソリューション コンポーネントです。 それらを作成するときに、 MSCRM.SolutionUniqueName 要求ヘッダーを使用し、その値をソリューションの一意の名前に設定することで、それらをソリューションに関連付けることができます。
テーブル定義を作成する
テーブル定義を作成するには、エンティティ定義データの JSON 表現をPOSTエンティティ セット パスにEntityDefinitionsします。 エンティティには、プライマリ名属性の定義を含める必要があります。 すべてのプロパティの値を設定する必要はありません。 説明を除き、この一覧の項目は必須ですが、説明を設定することをお勧めします。 指定しないプロパティ値は既定値に設定されます。 既定値を理解するには、「 テーブル定義の更新 」セクションの例を参照してください。 この記事の例では、次のエンティティ プロパティを使用します。
| EntityMetadata プロパティ | 価値 |
|---|---|
SchemaName |
new_BankAccount
手記: ソリューションの発行元に一致するカスタマイズ プレフィックスを含める必要があります。 ここでは既定値 "new_" が使用されますが、ソリューションに適したプレフィックスを選択する必要があります。 |
DisplayName |
Bank Account |
DisplayCollectionName |
銀行口座 |
Description |
顧客の銀行口座に関する情報を格納するエンティティ。 |
OwnershipType |
UserOwned
手記: ここで設定できる値については、「 OwnershipTypes EnumType」を参照してください。 |
IsActivity |
false |
HasActivities |
false |
HasNotes |
false |
前述のプロパティに加えて、 EntityMetadataAttributes プロパティには、エンティティのプライマリ名属性を表す 1 つの StringAttributeMetadata EntityType を含む配列が含まれている必要があります。 属性 IsPrimaryName プロパティは true である必要があります。 次の表では、この例で設定されたプロパティについて説明します。
| 主属性プロパティ | 価値 |
|---|---|
SchemaName |
new_AccountName |
RequiredLevel |
なし 手記: ここで設定できる値については、「 AttributeRequiredLevelManagedProperty ComplexType 」および 「AttributeRequiredLevel EnumType」を参照してください。 |
MaxLength |
100 |
FormatName |
Text 手記: プライマリ名属性では、テキスト形式を使用する必要があります。 他の文字列属性で使用できる書式オプションについては、「 文字列形式」を参照してください。 |
DisplayName |
アカウント名 |
Description |
銀行口座の名前を入力します。 |
IsPrimaryName |
true |
注
Label ComplexType を使用してラベルを作成または更新する場合は、LocalizedLabels プロパティのみを設定する必要があります。 返される UserLocalizedLabel 値は、ユーザーの言語設定に基づいており、読み取り専用です。
次の例は、プロパティが設定されたカスタム テーブルの作成を示しています。 言語は、1033 のロケール ID (LCID) を使用する英語です。 有効なロケール ID 値は、ロケール ID (LCID) の一覧のページで確認できます。
要求:
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"
}
応答:
HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.2/EntityDefinitions(00aa00aa-bb11-cc22-dd33-44ee44ee44ee)
テーブル定義を更新する
Important
PATCH メソッドを使用してデータ モデル エンティティを更新することはできません。 テーブル定義は、エンティティ定義を含まれるものに置き換える SDK for .NET UpdateEntityRequest クラス と同等です。
そのため、データ モデル エンティティを更新するときは、 PUT メソッドを使用し、変更しない既存のプロパティをすべて含むように注意する必要があります。
個々のプロパティを更新することはできません。
ラベルを使用してテーブル定義を更新する場合は、カスタム MSCRM.MergeLabels 要求ヘッダーを含め、更新プログラム内のラベルの処理方法を制御する必要があります。 項目のラベルに他の言語のラベルが既に含まれており、特定の言語のラベルが 1 つだけ含まれるラベルで更新する場合、 MSCRM.MergeLabels ヘッダーは、既存のラベルを上書きするか、新しいラベルを既存の言語ラベルとマージするかを制御します。
MSCRM.MergeLabels
trueに設定すると、定義された新しいラベルは、言語コードが一致した場合にのみ既存のラベルを上書きします。 既存のラベルを上書きして、含めるラベルのみを含める場合は、 MSCRM.MergeLabels を false に設定します。
Important
MSCRM.MergeLabels ヘッダーを含めない場合、既定の動作は値がfalseされたかのように、更新プログラムに含まれていないローカライズされたラベルは失われます。
テーブルまたは列の定義を更新する場合は、アプリケーションに加えた変更を適用する前に、 PublishXml アクション または PublishAllXml アクション を使用する必要があります。 詳細情報: カスタマイズの公開
通常は、エンティティ属性の JSON 定義を取得し、プロパティを変更してから送信します。 次の例には、テーブル定義の作成の例で作成した テーブルのすべての定義 プロパティが含まれていますが、 DisplayName が "Bank Business Name" に変更されています。ここでの JSON では、「 テーブル定義の作成 」の例では設定されていないプロパティの既定値が提供されることに注意してください。
注
次の例の一部では、 MetadataId 主キー値を使用します。 ただし、 LogicalName 代替キーを使用してスキーマ エンティティを参照することもできます。 詳細情報: 名前または MetadataId を使用してテーブル定義を取得する
要求:
PUT [Organization URI]/api/data/v9.2/EntityDefinitions(00aa00aa-bb11-cc22-dd33-44ee44ee44ee) 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": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"HasChanged": null
}
応答:
HTTP/1.1 204 No Content
OData-Version: 4.0
こちらも参照ください
Microsoft Dataverse メタデータで Web API を使用する
Web API を使用して列定義を作成および更新する
Web API を使用したテーブル定義のクエリ
名前または MetadataId を使用してテーブル定義を取得する
Web API を使用してテーブルリレーションシップをモデル化する
SDK for .NET を使用してテーブル定義を操作する
列 (属性) の定義
Web API テーブル スキーマ操作のサンプル
Web API テーブル スキーマ操作サンプル (C#)