Microsoft Dynamics 365 のエンティティ属性の概要
公開日: 2017年1月
対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online
エンティティには、各レコードに含めることのできるデータを表す一連の属性が格納されます。 開発者は、属性のさまざまな種類、およびその使用方法について理解する必要があります。 属性のメタデータは、さまざまな種類の属性の有効な操作と動作について説明します。 いくつかの種類の属性は、共通の動作によってグループ化できます。
開発者が経験する特定の状況は、選択する開発スタイルによって異なります。詳細:0fcf59aa-d564-4c9b-9042-40df8664f831#entity_programming。
注意
このトピックには、多くのメタデータ プロパティへの参照が含まれます。組織のエンティティ メタデータを表示するには、「組織のメタデータの参照」で説明されているメタデータ ブラウザー ソリューションをインストールします。 カスタマイズされていない組織のメタデータを、EntityMetadata.xlsx という名前の Excel ファイルで見ることもできます。このファイルは、ダウンロードした SDK の最上位のフォルダーに含まれています。
このトピックの内容
属性に対する有効な操作
属性の種類
分類データ属性
コレクション データの属性
日付と時間データの属性
イメージ データの属性
数量データの属性
参照データの属性
文字列データの属性
一意識別子データの属性
バーチャル属性
論理属性
属性に対する有効な操作
各属性には、サポートされる操作を記述するメタデータがあります。 使用する属性の有効な操作について把握しておく必要があります。
AttributeMetadata のプロパティ |
説明 |
---|---|
レコードの作成時にこの属性の値を設定できる場合は true、それ以外の場合は false です。 |
|
この属性の値を取得できる場合は true、それ以外の場合は false です。 |
|
レコードの更新時にこの属性の値を設定できる場合は true、それ以外の場合は false です。 |
属性の種類
属性はメタデータで定義されます。AttributeMetadata.AttributeTypeName プロパティには、種類を示す値が含まれます。 静的 AttributeTypeDisplayName メンバーは、指定できる種類の一覧を提供します。
注意
以前の AttributeType プロパティに含まれるデータは、ほとんど AttributeTypeName と対応しています。ただし、Virtual として ImageType 属性が表示される点が異なります。AttributeType プロパティではなく、AttributeTypeName プロパティを使用してください。
次のセクションでは、属性を容易に比較できるよう、属性の種類を以下のカテゴリにグループ化します。
分類データ属性
コレクション データの属性
日付と時間データの属性
イメージ データの属性
数量データの属性
参照データの属性
文字列データの属性
一意識別子データの属性
バーチャル属性
分類データ属性
このグループの 5 つの属性は、それぞれ共通の EnumAttributeMetadata 基本クラスから継承し、あらかじめ定義された有効な値のセットを使用してレコードをカテゴリにグループ化します。
OptionSetValue とメタデータ内の有効なオプションを表す整数に設定された Value プロパティを使用して、候補リスト、ステータス、および状態の属性を設定します。
ブール値を使用してブール属性を設定しますが、この分類のオプションは 2 つまでに制限されていることに注意してください。
EntityName 属性は文字列値を使用します。この文字列値は、組織の有効なエンティティの論理名である必要があります。
カスタムの候補リストおよびブール属性は、計算属性として定義できます。詳細:26ada6f7-3e22-465c-90f8-19d326785eb4#BKMK_Calculated。
メタデータの種類 |
AttributeTypeName の値 |
説明 |
---|---|---|
PicklistType |
有効な値が、OptionSetMetadata.Options 内で定義されているその属性の OptionMetadata.Value で設定されます。 アプリケーションのカスタマイズ ツールでは、これらの属性はオプション セット フィールドと呼ばれます。 |
|
StatusType |
これらのシステム属性は、一般的に StatusCode と呼ばれます。 有効な値が、OptionSetMetadata.Options 内で定義されているその属性の StatusOptionMetadata.Value で設定されます。 各オプションの StatusOptionMetadata.State プロパティは、対応する StateCode 値の有効な値を記述します。StatusCode を設定する前に、現在の StateCode 値に対して有効であることを確認してください。 レコードの状態を変更する必要がある場合は、SetStateRequest メッセージを使用して、StatusCode と StateCode 属性の値を設定します。 設定できる値に関して、これらの属性にはさらに制限が課される場合があります。EntityMetadata.EnforceTransitions 値が true の場合、StatusOptionMetadata.TransitionData プロパティには、許可されるオプションについての情報が格納される可能性があります。詳細:カスタムの状態モデルの遷移の定義。 |
|
StateType |
これらのシステム属性は、一般的に StatusCode と呼ばれます。 有効な値が、OptionSetMetadata.Options 内で定義されているその属性の StateOptionMetadata.Value で設定されます。 StateCode は、更新に対して有効ではありません。 レコードの作成後、StateCode は SetStateRequest メッセージを使用してのみ設定できます。 各オプションの StateOptionMetadata.DefaultStatus プロパティは、SetStateRequest のパラメーターとして設定されていない場合に使用される既定の StatusCode について記述します。 |
|
ブール値の種類 |
ブール属性はブール値を使用して直接設定できますが、他の属性と同様に、ブール オプションに対応する FalseOption と TrueOption プロパティを持つ OptionSet プロパティもあります。 これらの各プロパティは、属性の true および false の意味を表す一連のローカライズされたラベルを定義します。 アプリケーションのカスタマイズ ツールでは、これらの属性は 2 つのオプション フィールドと呼ばれます。これは、各オプションの意味が、true と false に限らず、相互に排他的なオプション ペアとなるからです。 たとえば、大と小というオプションがあります。 |
|
EntityNameType |
これらのシステム属性は、一般に、複数の種類に対して有効な一意の識別子や参照属性とペアになります。 この属性の値は、エンティティの論理名を表す文字列値です。 対応する参照属性が EntityReference の場合は、この属性の値は EntityReference.Name プロパティ値と同じです。 |
コレクション データの属性
これらのシステム属性は、値のコレクションを返します。
AttributeTypeName の値 |
説明 |
---|---|
CalendarRulesType |
CalendarRulesType を使用する実際の属性はありません。 事前バインド スタイルを使用する場合、コード生成ツールは、メタデータに存在しない以下の 2 つのシミュレーション属性を作成します。 これらの属性は、実際には、一対多でエンティティ インスタンスに関連付けられているカレンダー ルール レコードのビューを表します。
|
PartyListType |
次の属性では、さまざまな種類の活動に対して複数の EntityReference を設定できます。 ActivityPointer.allparties |
日付と時間データの属性
DateTimeType のメタデータ AttributeTypeName 値を持つ属性です。System.DateTime を使用して、これらの属性を設定します。
DateTimeAttributeMetadata.Format プロパティは、次の DateTimeFormat 値のいずれかになります。
DateAndTime: 日時を表示します。
DateOnly: 日付のみを表示します。
カスタムの日付および時間属性は、計算またはロールアップ属性として定義できます。詳細:計算およびロールアップ属性。
イメージ データの属性
イメージ属性をサポートするエンティティでは、エンティティ イメージ属性の SchemaName は常に EntityImage です。
詳細:イメージ属性, 8597998f-764f-4c73-b63d-9f5e02c78061#BKMK_EntityImages、および サンプル: エンティティ イメージを設定および取得する。
数量データの属性
このカテゴリの属性は、数値データを使用します。 これらの各属性には、有効な値の範囲を設定する MaxValue および MinValue メタデータ プロパティがあります。
カスタムの小数、整数、および通貨属性は、計算またはロールアップ属性として定義できます。詳細:計算およびロールアップ属性。
メタデータの種類 |
AttributeTypeName の値 |
説明 |
---|---|---|
BigIntType |
BigInt 属性は、内部のみで使用します。 |
|
DecimalType |
小数値を使用します。 Precision メタデータ プロパティは、属性で使用する精度を設定します。 |
|
DoubleType |
倍精度浮動小数点の値を使用します。 Precision メタデータ プロパティは、属性で使用する精度を設定します。 |
|
IntegerType |
整数値を使用します。 |
|
MoneyType |
decimalValue プロパティのある Money を使用します。 各通貨属性には、システムによって計算された対応する基本通貨の通貨属性があります。この属性は、組織で複数の通貨が有効になっている場合に、組織の基本通貨での値を計算するために使用されます。IsBaseCurrency プロパティは、通貨属性が基本通貨を表すかどうかを示します。詳細:トランザクション通貨 (通貨) エンティティ。 通貨属性には、使用される精度のレベルを指定できる PrecisionSource メタデータ プロパティもあります。 このプロパティの整数値は、以下のことを指定します。
|
参照データの属性
これらの属性は、一般に検索属性と呼ばれ、属性にはそれぞれ EntityReference 値が含まれます。 これらの属性の違いは、関連付けることのできるエンティティの種類です。Targets メタデータ プロパティには、検索の有効なターゲットを表す有効なエンティティ論理名の String[] が含まれます。 カスタム検索属性の場合、Targets プロパティでは単一の種類のみを使用できます。
PartyListType も一種の参照データ属性を表しますが、参照のコレクションを格納するため、コレクション データの属性に含まれます。
文字列データの属性
文字列データを使用する属性は 2 種類あります。
メタデータの種類 |
AttributeTypeName の値 |
説明 |
---|---|---|
StringType |
形式を適用できる文字列値の属性です。詳細:89969adc-8577-424c-bfcc-7f65c5d4bd19#BKMK_StringAttributeMetadataFormats。 カスタムの文字列属性は、計算属性として定義できます。詳細:26ada6f7-3e22-465c-90f8-19d326785eb4#BKMK_Calculated。 |
|
MemoType |
メモとして使用する文字列値の属性です。 この属性は、TextArea に設定された FormatName プロパティ値を持つ文字列属性に相当します。 |
一意識別子データの属性
UniqueidentifierType のメタデータ AttributeTypeName 値を持つ属性には、Null 値が許容される System.Guid 値が含まれます。
各エンティティ インスタンスには、レコードの一意の識別子を表す 1 つの属性が含まれます。 この属性には、命名規則 <エンティティ スキーマ名>+ID に従うスキーマ名があります。 たとえば、取引先企業エンティティの場合、一意の識別子を表す属性のスキーマ名は AccountId となります。 この値は、Entity.Id プロパティを使用して直接取得することもできます。 この属性は、クエリの ColumnSet に含めなくても、エンティティを取得すると必ず返されます。 この値は、新しくインスタンス化されたエンティティの場合は null になります。 新しいレコードを作成するときには、GUID 値を設定して一意の識別子を定義することができますが、最良のパフォーマンスを得るには、値を null のままにしておき、レコードの作成時にシステムが値を割り当てるようにすることをお勧めします。 レコードを保存すると、この値は読み取り専用になります。
エンティティには、エンティティの機能に応じて、他の一意識別子の属性が含まれる可能性があります。 たとえば、ビジネス プロセスに対して有効なエンティティには、レコードに関連付けられた現在のビジネス プロセスを追跡する ProcessId および StageId の一意識別子の属性が含まれます。 通常 EntityReference 値を使用する一部のシステムの関連付けでは、代わりに一意の識別子が使用されます。 たとえば、取引先企業や取引先担当者のエンティティには、取引先企業または取引先担当者の作成時に作成される CustomerAddress レコードに対応する 2 つの一意識別子の属性 (Address1_AddressId と Address2_AddressId) があります。
バーチャル属性
エンティティのメタデータには、VirtualType のメタデータ AttributeTypeName 値を持つ属性がいくつか含まれます。 これらの属性は、コード内では使用できません。
論理属性
論理属性には、エンティティの他の属性とは異なるデータベース テーブルに格納された値が含まれます。 ほとんどの場合、この内部実装は、Microsoft Dynamics 365 での作業には関係ありません。 論理属性を計算フィールドのソースとして使用する場合、計算フィールドの値を並べ替えることはできません。AttributeMetadata.IsLogical プロパティを使用して、属性が論理属性かどうかを検出します。
最も一般的な論理属性は、CompetitorAddress、CustomerAddress、InternalAddress、LeadAddress、および PublisherAddress などの特別なエンティティで住所情報を格納する属性です。 論理属性を使用して 2 つの住所の属性の完全なセットを含む 8 つのシステム エンティティがあります。 これらの各属性は、Address1_City や Address2_Latitude のように、"Address*" で始まります。
関連項目
Microsoft Dynamics 365 のエンティティの概要
イメージ属性
計算およびロールアップ属性
サンプル: 有効な状態の遷移を取得する
サンプル: エンティティ イメージを設定および取得する
Microsoft Dynamics 365
© 2017 Microsoft. All rights reserved. 著作権