マルチ テーブル検索
マルチテーブル検索タイプの列を使用すると、ユーザーは、環境内の他のテーブルに対して複数の一対多 (1:N) の関連付けを持つ特定のテーブルを使用できます。 単一の検索タイプの列は、他の複数のテーブルを参照できます。 マルチテーブル タイプの列に送信された検索値は、関連するテーブルのいずれかのレコードと一致します。 マルチテーブル検索は、ローカル テーブルと仮想テーブルの両方を参照テーブルとして作成できます。
マルチテーブルタイプは現在、アカウントと連絡先に接続するCustomerのような静的タイプとして Microsoft Dataverse に組み込まれています。 この新機能により、ユーザーは必要になる可能性のある他のマルチテーブルルックアップを定義することができます。
注意
現時点では、ユーザーはSDKまたはWebAPIを介してカスタムマルチテーブルルックアップを作成および変更できます。 インタラクティブなユーザーインターフェイスのサポートは、将来のリリースで提供される予定です。
使用例
ライブラリ内のユーザー向けのメディアをホストしているとしましょう。 多くの異なる MediaObject があり、それらの多くは同じ名前ですが、Books、音声、そしてビデオなどの異なる形式です。 1: N リレーションシップから new_Books
、new_Audio
、new_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 |
[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#)