マルチ テーブル検索

マルチテーブル検索タイプの列を使用すると、ユーザーは、環境内の他のテーブルに対して複数の一対多 (1:N) の関連付けを持つ特定のテーブルを使用できます。 単一の検索タイプの列は、他の複数のテーブルを参照できます。 マルチテーブル タイプの列に送信された検索値は、関連するテーブルのいずれかのレコードと一致します。 マルチテーブル検索は、ローカル テーブルと仮想テーブルの両方を参照テーブルとして作成できます。

マルチテーブルタイプは現在、アカウントと連絡先に接続するCustomerのような静的タイプとして Microsoft Dataverse に組み込まれています。 この新機能により、ユーザーは必要になる可能性のある他のマルチテーブルルックアップを定義することができます。

注意

現時点では、ユーザーはSDKまたはWebAPIを介してカスタムマルチテーブルルックアップを作成および変更できます。 インタラクティブなユーザーインターフェイスのサポートは、将来のリリースで提供される予定です。

使用例

ライブラリ内のユーザー向けのメディアをホストしているとしましょう。 多くの異なる MediaObject があり、それらの多くは同じ名前ですが、Books、音声、そしてビデオなどの異なる形式です。 1: N リレーションシップから new_Booksnew_Audionew_Video への new_Media というマルチ テーブル ルックアップを作成すると、特定のテーブルに格納されているレコードの迅速な識別を提供する new_Media ルックアップ テーブルが作成されます。

new_Media ルックアップ テーブル

PrimaryID PrimaryName RelatedID 関連名
<media1> MediaObjectOne <books1> Content1
<media2> MediaObjectTwo <audio1> Content1
<media3> MediaObjectThree <video1> Content3
<media4> MediaObjectFour <audio2> Content3

new_Books テーブル

PrimaryID PrimaryName CallNumber
<books1> Content1 1ww-3452
<books2> Content2 a4e-87hw

new_Audio テーブル

PrimaryID PrimaryName AudioFormat
<audio1> Content1 mp4
<audio2> Content3 wma

new_Video テーブル

PrimaryID PrimaryName VideoFormat
<video1> Content3 wmv
<video2> Content2 avi

メディア検索は、ポリモーフィック検索のテーブル全体にわたるレコードを返すことができます。

  • Content1 という名前のメディアを検索すると、<books1> と <audio1> のレコードが取得されます

  • Content3 のメディアを検索すると、<audio2> と <video1> のレコードが取得されます

WebAPI の例

次のHTTP POST リクエストは、ポリモーフィック ルックアップ属性を作成します。

Request

POST [Organization URI]/api/data/v9.2/CreatePolymorphicLookupAttribute HTTP/1.1 

Accept: application/json 
Content-Type: application/json; charset=utf-8 
OData-MaxVersion: 4.0 
OData-Version: 4.0 

{
 "OneToManyRelationships": [
   {
     "SchemaName": "new_media_new_book",
     "ReferencedEntity": "new_book",
     "ReferencingEntity": "new_media"
   },
   {
     "SchemaName": "new_media_new_video",
     "ReferencedEntity": "new_video",
     "ReferencingEntity": "new_media"
   },
   {
     "SchemaName": "new_media_new_audio",
     "ReferencedEntity": "new_audio",
     "ReferencingEntity": "new_media",
     "CascadeConfiguration": {  
        "Assign": "NoCascade",  
        "Delete": "RemoveLink",  
        "Merge": "NoCascade",  
        "Reparent": "NoCascade",  
        "Share": "NoCascade",  
        "Unshare": "NoCascade"  
     }
   }
 ],

 "Lookup": {
   "AttributeType": "Lookup",
   "AttributeTypeName": {
     "Value": "LookupType"
   },

   "Description": {
     "@odata.type": "Microsoft.Dynamics.CRM.Label",
     "LocalizedLabels": [
       {
         "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
         "Label": "Media Polymorphic Lookup",
         "LanguageCode": 1033
       }
     ],

     "UserLocalizedLabel": {
       "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
       "Label": " Media Polymorphic Lookup Attribute",
       "LanguageCode": 1033
     }
   },

   "DisplayName": {
     "@odata.type": "Microsoft.Dynamics.CRM.Label",
     "LocalizedLabels": [
       {
         "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
         "Label": "MediaPolymorphicLookup",
         "LanguageCode": 1033
       }
     ],

     "UserLocalizedLabel": {
       "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
       "Label": "MediaPolymorphicLookup",
       "LanguageCode": 1033
     }
   },

   "SchemaName": "new_mediaPolymporphicLookup",
   "@odata.type": "Microsoft.Dynamics.CRM.ComplexLookupAttributeMetadata"
 }
}

次の JSON は、ポリモーフィック属性の ID と作成されたすべてのリレーションシップを含む HTTP POST 要求からの応答の本文です。

{
    "@odata.context":
      "http://<organization URL>/api/data/v9.1/$metadata#Microsoft.Dynamics.CRM.CreatePolymorphicLookupAttributeResponse",

    "RelationshipIds":[
        "77d4c6e9-0397-eb11-a81c-000d3a6cfaba",
        "7ed4c6e9-0397-eb11-a81c-000d3a6cfaba",
        "85d4c6e9-0397-eb11-a81c-000d3a6cfaba"
    ],

    "AttributeId":"d378dd3e-42f4-4bd7-95c7-0ee546c7de40"
}

複数テーブルのルックアップ API を使用する

次の表に、テーブルと属性の定義に関連する操作を示します。

操作
(方式)
Description URL 形式
Create
(POST)
新しい API [OrganizationUrl]/api/data/v9.2
/CreatePolymorphicLookupAttribute
属性の取得
(GET)
既存の API [OrganizationUrl]/api/data/v9.2
/EntityDefinitions(<EntityId>)/Attributes(<AttributeId>)
リレーションシップの取得
(GET)
既存の API [OrganizationUrl]/api/data/v9.2
/RelationshipDefinitions(<RelationshipId>)
リレーションシップを追加する
(POST)
リレーションシップを
既存の
ポリモーフィック ルックアップに追加
属性
[OrganizationUrl]/api/data/v9.2
/RelationshipDefinitions
関連付けの削除
(DELETE)
既存の API [OrganizationUrl]/api/data/v9.2
/RelationshipDefinitions(<RelationshipId>)
属性の削除
(DELETE)
既存の API [OrganizationUrl]/api/data/v9.2
/EntityDefinitions(<EntityId>)/Attributes(<AttributeId>)

次の表に、テーブルと属性データの定義に関連する操作を示します。

オペレーション
(方式)
Description URL 形式
Create
(POST)
new_checkouts の例を参照してください [OrganizationUrl]/api/data/v9.2
/<entitysetName>
Retrieve
(GET)
次のヘッダーを追加して、注釈を取得します。

Content-Type: application/json
Prefer: odata.include-annotations="*"

[OrganizationUrl]/api/data/v9.2
/<entitysetName>(<recordId>)

以下の例は、2 行で新しいレコードを作成するリクエストの例です。

POST [OrganizationUrl]/api/data/v9.1/new_checkouts
{
  "new_name": "c1",
  new_CheckedoutItem_new_book@odata.bind: "/new_books(387a2c9b-ecc6-ea11-a81e-000d3af68bd7)"
}

{
  "new_name": "c2",
  new_CheckedoutItem_new_device@odata.bind: "/new_devices(6472e7ba-ecc6-ea11-a81e-000d3af68bd7)"
}

ポリモーフィック ルックアップの作成 (ペイロードの例)

POST [OrganizationUrl]/api/data/v9.2/CreatePolymorphicLookupAttribute
{
  "OneToManyRelationships": [
    {
      "SchemaName": "new_checkout_poly_new_book",
      "ReferencedEntity": "new_book",
      "ReferencingEntity": "new_checkout"
    },
    {
      "SchemaName": "new_checkout_poly_new_device",
      "ReferencedEntity": "new_device",
      "ReferencingEntity": "new_checkout"
    },
    {
      "SchemaName": "new_checkout_poly_new_dvd",
      "ReferencedEntity": "new_dvd",
      "ReferencingEntity": "new_checkout",
      "CascadeConfiguration": {
        "Assign": "NoCascade",
        "Delete": "RemoveLink",
        "Merge": "NoCascade",
        "Reparent": "NoCascade",
        "Share": "NoCascade",
        "Unshare": "NoCascade"
      }
    }
  ],
  "Lookup": {
    "AttributeType": "Lookup",
    "AttributeTypeName": {
      "Value": "LookupType"
    },
    "Description": {
      "@odata.type": "Microsoft.Dynamics.CRM.Label",
      "LocalizedLabels": [
        {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Checkouted item Polymorphic Lookup Attribute",
          "LanguageCode": 1033
        }
      ],
      "UserLocalizedLabel": {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Checkedout item Polymorphic Lookup Attribute",
        "LanguageCode": 1033
      }
    },
    "DisplayName": {
      "@odata.type": "Microsoft.Dynamics.CRM.Label",
      "LocalizedLabels": [
        {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Checkedout item",
          "LanguageCode": 1033
        }
      ],
      "UserLocalizedLabel": {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Checkedout item",
        "LanguageCode": 1033
      }
    },
    "SchemaName": "new_CheckedoutItem",
    "@odata.type": "Microsoft.Dynamics.CRM.ComplexLookupAttributeMetadata"
  }
}

既存のポリモーフィック ルックアップにリレーションシップを追加します (ペイロードの例)

POST [OrganizationUrl]/api/data/v9.2/RelationshipDefinitions
{
  "SchemaName": "new_checkout_poly_new_researchresource",
  "@odata.type": "Microsoft.Dynamics.CRM.OneToManyRelationshipMetadata",
  "CascadeConfiguration": {
    "Assign": "NoCascade",
    "Delete": "RemoveLink",
    "Merge": "NoCascade",
    "Reparent": "NoCascade",
    "Share": "NoCascade",
    "Unshare": "NoCascade"
  },
  "ReferencedEntity": "new_researchresource",
  "ReferencingEntity": "new_checkout",
  "Lookup": {
    "AttributeType": "Lookup",
    "AttributeTypeName": { "Value": "LookupType" },
    "Description": {
      "@odata.type": "Microsoft.Dynamics.CRM.Label",
      "LocalizedLabels": [
        {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Checkout Polymorphic Lookup Attribute",
          "LanguageCode": 1033
        }
      ],
      "UserLocalizedLabel": {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Checkout Polymorphic Lookup Attribute",
        "LanguageCode": 1033
      }
    },
    "DisplayName": {
      "@odata.type": "Microsoft.Dynamics.CRM.Label",
      "LocalizedLabels": [
        {
          "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
          "Label": "Checkout item",
          "LanguageCode": 1033
        }
      ],
      "UserLocalizedLabel": {
        "@odata.type": "Microsoft.Dynamics.CRM.LocalizedLabel",
        "Label": "Checkout item",
        "LanguageCode": 1033
      }
    },
    "SchemaName": "new_CheckedoutItem",
    "@odata.type": "Microsoft.Dynamics.CRM.LookupAttributeMetadata"
  }
}

関連情報

テーブル定義による Web API の利用
テーブルの関連付けの作成と更新
Web API を使用したテーブル定義のクエリ
名前または MetadataId によるテーブル定義を取得する
Web API を使用したテーブルと列のモデル化
Web API テーブル スキーマ操作サンプル
Web API テーブル スキーマ操作サンプル (C#)