CSDL $metadata ドキュメント内で、Service 名前空間のすぐ下に EntityTypes の一覧があります。 エンティティ型は、キーを持つ名前付き構造化型です。 テーブルの名前付きプロパティとリレーションシップを定義します。
EntityType 通常、要素には次の属性があります。
| 特性 | Description |
|---|---|
Name |
型の名前; テーブル用の LogicalName。 |
BaseType |
種類が継承する EntityType。 |
たとえば、この XML 要素は、プロパティとナビゲーション プロパティを除いて、account エンティティのEntityTypeである。
<EntityType Name="account" BaseType="mscrm.crmbaseentity">
<Key>
<PropertyRef Name="accountid" /> <!--The name of the primary key -->
</Key>
<!--Properties and navigation properties removed for brevity-->
<Annotation Term="Org.OData.Core.V1.Description" String="Business that represents a customer or potential customer. The company that is billed in business transactions." />
</EntityType>
3 つの例外を除き、すべてのエンティティ型には次の子要素があります。
| 要素 | Description |
|---|---|
Key |
<PropertyRef>属性がテーブルの主キーを表すName要素を格納します。 |
Property |
EntityType のプロパティに関する詳細が含まれています。 Web API のプロパティを参照してください。 |
NavigationProperty |
この EntityType とのリレーションシップに関する詳細が含まれています。 Web API のナビゲーション プロパティを参照してください |
特殊なエンティティ型
Key、Property、またはNavigationProperty要素を持たない 3 つのエンティティ型があります。
crmbaseentity
この要素は、ビジネス データを含む任意のテーブルに共通の抽象型を定義します。
<EntityType Name="crmbaseentity" Abstract="true" />
ビジネス データを含むすべてのエンティティ型は crmbaseentityから継承されるため、値が 1 つのテーブルに固有でない場合、 crmbaseentity が参照されます。
expando
この要素は、 crmbaseentity から継承するエンティティ型を定義しますが、 OData OpenType でもあります。
<EntityType Name="expando" BaseType="mscrm.crmbaseentity" OpenType="true" />
expando エンティティ型は、アクションのパラメーターとして、または関数またはアクションからの応答プロパティとして使用できます。
詳細情報: カスタム API でオープン型を使用する
crmmodelbaseentity
この要素は、$metadata ドキュメントの下部近くに存在します。
<EntityType Name="crmmodelbaseentity" Abstract="true" />
この要素は、スキーマ定義に共通の抽象型を定義します。 これは、テーブル定義に使用される別の抽象基本クラスの基本型です。 Web API を使用してテーブル、列、リレーションシップを作成および変更する場合を除き、この型から継承するエンティティ型を使用する必要はありません。 詳細: テーブル定義で Web API を使用する。
EntityType の継承
ビジネス データの場合、 crmbaseentityから継承する抽象エンティティ型がさらに 2 つあります。
| EntityType | Description |
|---|---|
principal |
systemuser エンティティ型と team エンティティ型は、 principal エンティティ型から継承されます。 Principal では、すべてのユーザー所有テーブルに含まれる ownerid プロパティのみが提供されます。 この継承により、ユーザー所有のレコードをユーザーまたはチームに割り当てることができます。 ownerid プロパティは、systemuser と team EntityTypes の両方の主キーです。 |
activitypointer |
アクティビティとして構成されているテーブルは、 activitypointer エンティティ型から継承されます。 この型は、エンティティ型で見つかる一般的なプロパティ ( appointment、 email、 fax、 letter、 phonecall、 taskなど) を提供します。 アクティビティを表すカスタム テーブルを作成することもできます。 これらの共通プロパティを使用すると、これらの共通プロパティを使用して、さまざまな種類のアクティビティの一覧を取得できます。activityid プロパティは、activitypointerから継承するすべてのエンティティ型の主キーです。 |
テーブル定義を使用する場合は、継承の別の階層があります。
MetadataBase エンティティ型は抽象 crmmodelbaseentity から継承され、共通の MetadataId プロパティと HasChanged プロパティが提供されます。 詳細: テーブル定義で Web API を使用する。
代替キー
エンティティ型に代替キーが定義されている場合、代替キー定義に関連するプロパティを記述する Annotation があります。
次の例は、account プロパティを代替キーとして有効にするようにaccountnumber エンティティが構成されている場合の注釈を示しています。
<Annotation Term="OData.Community.Keys.V1.AlternateKeys">
<Collection>
<Record Type="OData.Community.Keys.V1.AlternateKey">
<PropertyValue Property="Key">
<Collection>
<Record Type="OData.Community.Keys.V1.PropertyRef">
<PropertyValue Property="Alias" String="accountnumber" />
<PropertyValue Property="Name" PropertyPath="accountnumber" />
</Record>
</Collection>
</PropertyValue>
</Record>
</Collection>
</Annotation>
次のステップ
プロパティについて説明します。
こちらも参照ください
Web API の種類と操作
Web API サービス ドキュメント
Web API のプロパティ
Web API のナビゲーション プロパティ
Web API アクション
Web API 関数
Web API の複合型と列挙型
Dataverse Web API を使用する