代替キーを使用してレコードを作成

代替キーを使用して 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 を使用する検索列のために提供された値は、EntityReferenceKeyAttributes で定義された代替キーと共に使用して、関連レコードを指定することができるようになります。 これらは解決され、メッセージが処理される前にプライマリ ID ベースのテーブル参照に置き換えられます。

代替キー使用時の例外

代替キーを使用するときは、以下のような条件と起こり得る例外に注意してください。

  • プライマリ ID が用意されている場合、プライマリ ID が使用されます。 用意されていない場合は、KeyAttributeCollection の確認が行われます。 KeyAttributeCollection が用意されていない場合は、エラーをスローします。

  • 用意された KeyAttributeCollection にテーブルの主キーである 1 つの列が含まれていて、その値が有効である場合、その用意された値が Entity または EntityReference の ID プロパティに設定されます。

  • キー列が提供されている場合、提供された列のセットと Entity に対して定義されているキーとの照合が試みられます。 一致が見つからない場合は、エラーがスローされます。 一致が検出された場合は、これらの列に対して提供された値の有効性が確認されます。 有効な場合は、提供されたキー値に一致したレコードの ID が取得され、Entity または EntityReference の ID 値にこの値が設定されます。

  • 一意のキーとして定義されていない列セットを指定する場合は、一意のキー列の使用が必要であることを示すエラーがスローされます。

関連項目

テーブルの代替キーを定義する
変更の追跡を使用してデータを外部システムに同期
Upsert を使用してレコードを挿入または更新

注意

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

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