Web API ナビゲーション プロパティ

CSDL $metadata ドキュメント 内で、抽象的でない各エンティティ型は NavigationProperty 要素を含みます。 NavigationProperty 要素は、現在のエンティティ型に関連するデータを記述します。 レコードの取得時に、関連データを含めるためにナビゲーション プロパティを拡張することができます。

次の表に、NavigationProperty 要素の属性を説明します。

Attribute Description
Name 単一値のナビゲーション プロパティの名前: 大文字と小文字を区別する
Type 関連したエンティティ型; 単一の値または型のコレクションにすることができる
Partner 関連付けの反対側にあるナビゲーション プロパティの名前
Nullable="false" 値が null 値である可能性があるかどうか

重要

ナビゲーション プロパティには、single-valuedcollection-valued の 2 種類があります。 ナビゲーション プロパティのタイプごとに機能が異なるため、この区別は重要です。

単一値ナビゲーション プロパティ

ナビゲーション プロパティ Type が単一の値を参照する場合、別のテーブル レコードへの参照を作成する 1 対多の関係を表します。 この関連付けは通常検索と呼ばれます。 次の例は、account テーブル createdby ナビゲーション プロパティです。

<NavigationProperty 
    Name="createdby" 
    Type="mscrm.systemuser" 
    Nullable="false" 
    Partner="lk_accountbase_createdby">
    <ReferentialConstraint 
        Property="_createdby_value" 
        ReferencedProperty="systemuserid" />
</NavigationProperty>

この単一値のナビゲーション プロパティは、複数の account レコードを単一の systemuser レコードに接続します。 各 systemuser レコードには、ユーザーが作成した account レコードに接続する lk_accountbase_createdby という名前のコレクション値のナビゲーション プロパティが含まれるようになります。

これらの値は関連付け定義に保存されます。 次の表で説明するように、SDK OneToManyRelationshipMetadata または Web API OneToManyRelationshipMetadata エンティティ型を使用してアクセスできます。

Attribute OneToManyRelationshipMetadata プロパティ Description
Name ReferencingEntityNavigationPropertyName 単一値のナビゲーション プロパティの名前。
Partner ReferencedEntityNavigationPropertyName コレクション値のナビゲーション プロパティの名前。

検索プロパティ

単一値のナビゲーション プロパティには、検索プロパティを参照する Property 属性のある ReferentialConstraint があります。 検索プロパティでは、_<name>_value という命名規則が使用されます。 検索プロパティに関する詳細

ReferentialConstraint には、関連するエンティティ型の主キー名を識別する ReferencedProperty 属性があります。

ほとんどの場合、検索プロパティで表示される <name> は、単一値ナビゲーション プロパティがマルチテーブル検索を表す場合を除いて、ナビゲーション プロパティの名前と一致します。

マルチテーブル検索

単一値のナビゲーション プロパティが、マルチテーブル、またはポリモーフィック、検索の一部である場合、1 つ以上ある単一値のナビゲーション プロパティの ReferentialConstraint である単一の検索プロパティが表示されます。

エンティティ型には次のような組み合わせがあり、単一の _customerid_value 検索プロパティが、マルチテーブル検索を表す複数ある単一値のナビゲーション プロパティをサポートします。 マルチテーブル検索でサポートされるテーブルのタイプごとに、単一値のナビゲーション プロパティが 1 つあります。

<EntityType 
    Name="socialprofile" 
    BaseType="mscrm.crmbaseentity">
    <Key>
        <PropertyRef Name="socialprofileid" />
    </Key>
    <Property 
        Name="_customerid_value" <!-- lookup property -->
        Type="Edm.Guid">
        <Annotation 
            Term="Org.OData.Core.V1.Description" 
            String="Shows the customer that this social profile belongs to." />
    </Property>
    <NavigationProperty 
        Name="customerid_contact" <!-- Name different from lookup property -->
        Type="mscrm.contact" 
        Nullable="false" 
        Partner="Socialprofile_customer_contacts">
        <ReferentialConstraint 
            Property="_customerid_value" <!--  Reference to lookup property  -->
            ReferencedProperty="contactid" />
    </NavigationProperty>
    <NavigationProperty 
        Name="customerid_account" <!-- Name different from lookup property -->
        Type="mscrm.account" 
        Nullable="false" 
        Partner="Socialprofile_customer_accounts">
        <ReferentialConstraint 
            Property="_customerid_value"  <!--  Reference to lookup property  -->
            ReferencedProperty="accountid" />
    </NavigationProperty>
</EntityType>

このような場合、単一値のナビゲーション プロパティのいずれかの値を設定すると、参加している他のすべての単一値のナビゲーション プロパティが null 値に設定されます。 対応する検索プロパティの GUID 値は変更されますが、現在どのテーブルを参照しているかを知るために、使用可能な特定の注釈を取得する必要があります。 詳細情報: 検索プロパティ データ

コレクション値ナビゲーション プロパティ

ナビゲーション プロパティ Type がコレクション値を参照する場合、多対一、または多対多の関連付けを表します。 たとえば、これは取引先企業エンティティの Account_Tasks ナビゲーション プロパティです。

<NavigationProperty 
    Name="Account_Tasks" 
    Type="Collection(mscrm.task)" 
    Partner="regardingobjectid_account_task" 
/>

このナビゲーション プロパティは、account レコードを多数の task レコードに接続します。 各 task には、関係するオブジェクトとして account を参照する regardingobjectid_account_task という名前の単一値ナビゲーション プロパティが含まれます。

OData を使用してコレクション値のナビゲーション プロパティを操作する方法は、関連付けが一対多でも多対多でも同じです。 どちらもコレクションと見なされ、同じ方法で操作します。

多対一関連付け

多対一の関連付けは、一対多の関連付けのミラー イメージです。 パートナーの単一値ナビゲーション プロパティがあります。 以前の単一値のナビゲーション プロパティ の例では、account エンティティ型の createdby 単一値ナビゲーション プロパティを確認しました。

systemuser エンティティ型には、lk_accountbase_createdby という名前のコレクション値ナビゲーション プロパティ パートナーがあります。

<NavigationProperty Name="lk_accountbase_createdby"
    Type="Collection(mscrm.account)"
    Partner="createdby" />

多対多の関連付け

コレクション値ナビゲーション プロパティの NamePartner が同じ場合、多対多の関連付けを表します。

サービス ドキュメントで、多対多の関連付けの実装に関する詳細を参照できます。 ほとんどのユース ケースは無視できます。

たとえば、すべての多対多の関連付けには、それをサポートする交差テーブルがあります。 これらの交差テーブルには、通常は 4 つの読み取り専用プロパティしかないエンティティ型があります。 次の例では、systemuserteam エンティティ型間の多対多の関連付けをサポートする交差テーブルである teammembership エンティティ型が示されています。

<EntityType Name="teammembership"
    BaseType="mscrm.crmbaseentity">
    <Key>
        <PropertyRef Name="teammembershipid" />
    </Key>
    <Property Name="systemuserid"
        Type="Edm.Guid" />
    <Property Name="versionnumber"
        Type="Edm.Int64" />
    <Property Name="teammembershipid"
        Type="Edm.Guid" />
    <Property Name="teamid"
        Type="Edm.Guid" />
</EntityType>

すべてのプロパティが読み取り専用であるため、交差テーブルを直接表すエンティティ型を操作することはできません。 各エンティティ型のそれぞれのコレクション値ナビゲーション プロパティで操作を実行します。 詳細: Web API を使用して、テーブル行を関連付けおよび関連付けを解除する

この多対多の関連付けでは、systemuser エンティティ型には、次のコレクション値ナビゲーション プロパティがあります。

<NavigationProperty Name="teammembership_association"
    Type="Collection(mscrm.team)"
    Partner="teammembership_association" />

team エンティティ型には、このコレクション値ナビゲーション プロパティがあります。

<NavigationProperty Name="teammembership_association"
    Type="Collection(mscrm.systemuser)"
    Partner="teammembership_association" />

これらの値は関連付け定義に保存されます。 次の表で説明するように、SDK ManyToManyRelationshipMetadata または Web API ManyToManyRelationshipMetadata エンティティ型を使用してアクセスできます。

Attribute ManyToManyRelationshipMetadata プロパティ Description
Name Entity1NavigationPropertyName エンティティ型のコレクション値ナビゲーション プロパティの名前
Partner Entity2NavigationPropertyName 他のエンティティ型のコレクション値ナビゲーション プロパティの名前

次の手順

アクションの定義について説明します。

参照

Web API の種類および操作
Web API サービス ドキュメント
Web API EntityTypes
Web API プロパティ
Web API アクション
Web API 関数
Web API の複合型および列挙の種類
Dataverse Web API の使用
OData バージョン 4.0 パート 3: Common Schema Definition Language (CSDL) Plus Errata 03 7.1 Element edm:NavigationProperty

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。