代替キーを使用してレコードを作成
代替キーを使用して Entity および EntityReference クラスのインスタンスを作成できます。 この記事では、使用パターンと、代替キー使用時にスローされる可能性のある例外について説明します。 テーブルに対して代替キーを定義する方法については、テーブルの代替キーの定義を参照してください。
注意
代替キーを使用してレコードの更新もできます。 詳細: 代替キーで更新する
テーブルを作成するための代替キーの使用
プライマリ ID、単一の KeyAttribute、または 1 回の呼び出しのキー列のコレクションがあれば、これらのコンストラクターを使って Entity を作成できます。
public Entity (string logicalName, Guid id) {…}
public Entity (string logicalName, string keyName, object keyValue) {…}
public Entity (string logicalName, KeyAttributeCollection keyAttributes) {…}
更新操作に使用される有効な Entity には、テーブルの論理名と次のいずれかが含まれています。
- ID の値 (主キーの GUID 値)
- 指定されたキー値のペア
- そのテーブルに定義されているキーに一致する有効な列セットを持つ KeyAttributeCollection。
EntityReference の作成に代替キーを使用
また、プライマリ ID、単一の KeyAttribute、または 1 回の呼び出しのキー列のコレクションがあれば、これらのコンストラクターを使って EntityReference を作成できます。
public EntityReference(string logicalName, Guid id) {…}
public EntityReference(string logicalName, string keyName, object keyValue) {…}
public EntityReference(string logicalName, KeyAttributeCollection keyAttributeCollection) {…}
有効な EntityReference には、テーブルの論理名と次のいずれかが含まれています。
- ID の値 (主キーの GUID 値)
- 指定されたキー値のペア
- そのテーブルに定義されているキーに一致する有効な列セットを持つ KeyAttributeCollection 。
メッセージへの代替入力
テーブルを CreateRequest および UpdateRequest に渡すとき、EntityReference を使用する検索列のために提供された値は、EntityReference を KeyAttributes で定義された代替キーと共に使用して、関連レコードを指定することができるようになります。 これらは解決され、メッセージが処理される前にプライマリ ID ベースのテーブル参照に置き換えられます。
代替キー使用時の例外
代替キーを使用するときは、以下のような条件と起こり得る例外に注意してください。
プライマリ ID が用意されている場合、プライマリ ID が使用されます。 用意されていない場合は、KeyAttributeCollection の確認が行われます。 KeyAttributeCollection が用意されていない場合は、エラーをスローします。
用意された KeyAttributeCollection にテーブルの主キーである 1 つの列が含まれていて、その値が有効である場合、その用意された値が Entity または EntityReference の ID プロパティに設定されます。
キー列が提供されている場合、提供された列のセットと Entity に対して定義されているキーとの照合が試みられます。 一致が見つからない場合は、エラーがスローされます。 一致が検出された場合は、これらの列に対して提供された値の有効性が確認されます。 有効な場合は、提供されたキー値に一致したレコードの ID が取得され、Entity または EntityReference の ID 値にこの値が設定されます。
一意のキーとして定義されていない列セットを指定する場合は、一意のキー列の使用が必要であることを示すエラーがスローされます。
関連項目
テーブルの代替キーを定義する
変更の追跡を使用してデータを外部システムに同期
Upsert を使用してレコードを挿入または更新
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。
フィードバック
フィードバックの送信と表示