Updater の実装
最終更新日: 2010年4月20日
適用対象: SharePoint Server 2010
この記事の内容
説明
構文
備考
例
説明
Updater メソッド インスタンスは、外部システムで既存のエンティティ インスタンスを更新できるようにします。たとえば、Customer という名前のビジネス オブジェクトがある場合、このステレオタイプを、外部システムの顧客 "John" の住所を更新するために使用することができます。
Updater メソッドを定義しない場合は、アイテムはエンティティのための Business Connectivity Services 機能によっては更新できません。たとえば、リストのアイテムを編集するために、外部コンテンツ タイプに基づく外部リストのリボンの、[アイテムの編集] ボタンをクリックすることはできません。
BDC は、データの競合を検出するために更新の前に読み取り操作を実行します。
Updater メソッドで、アイテムの更新に必要な一連のフィールドは、アップデーター ビューと呼ばれます。
構文
以下は Updater メソッドのための一般的なメソッド署名です。
void UpdateEntity(EntityDataType fields)
void UpdateEntity(EntityDataType fields, EntityDataType previousValuesOfFields)
備考
Updater メソッドとしてみなされるには、以下の要件が必要です。
Updater メソッドは、入力としてアイテムの識別子 (あるいは識別子の組み合わせ) を必要とします。
Updater メソッドは、SpecificFinder メソッドのすべての読み取り/書き込みフィールドを必要とします。
Updater ビューは、SpecificFinder ビューと同じか、そのサブセットである必要があります。
注意
更新メソッドは、データ損失を回避するために、トランザクションであることを推奨します。
複数の特定のファインダーがある場合、Updater ビューは、少なくとも 1 つの SpecificFinder ビューと同じか、そのサブセットである必要があります。
Creator ビューの場合、Updater ビューは、少なくとも 1 つの特定のファインダーのビューと同じか、そのサブセットである必要があります。読み取り専用でない特定のファインダーのフィールドのすべてが含まれる必要があります。これは、Business Connectivity Services によって自動生成されたフォームが SpecificFinder ビューに依存しているためです。このようにしない場合は、Updater ビューのその他のフィールドが更新できなくなります。作成操作と同様に、Business Connectivity Services はこの依存関係を調べて、外部リストへの更新操作を無効にします。更新可能の識別子 (あるいは識別子の組み合わせ) もまたこのステレオタイプによって更新できますが、それらは Business Connectivity Services 自動生成フォームによってサポートされません。
表 1 は、Creator ビューと Update ビューの依存関係と、作成および更新操作の状態を要約して示します。
表 1. クリエイターおよび更新ビューの依存関係と、作成および更新操作の状態
シナリオ番号 |
特定のファインダー ビューのフィールド |
クリエイター ビューのフィールド |
アップデーター ビューのフィールド |
可能な操作 |
備考 |
---|---|---|---|---|---|
1. |
A B (読み取り専用) C D E (読み取り専用) |
A B C D E F |
A C D F |
作成: 許可しない 更新: 許可しない オフライン作成: 許可しない オフライン更新: 許可しない |
フィールド F が特定のファインダーで見つかりません。このため、BCS は作成および更新操作を無効にします。 |
2. |
A B (読み取り専用) C D E (読み取り専用) |
A B C D E |
A C D |
作成: 許可 更新: 許可 オフライン作成: 許可 オフライン更新: 許可 |
フィールド B とフィールド E の値は、作成中にユーザーが指定できますが、後で更新することはできません。 |
3. |
A B (読み取り専用) C D E (読み取り専用) |
A B |
A C D |
作成: 許可 更新: 許可 オフライン作成: 許可 オフライン更新: 許可 |
フィールド B の値は、作成中にユーザーが指定できますが、後で更新することはできません。 フィールド E の値は、外部システムによって割り当てられ、ユーザーが更新することはできません。 オフライン作成では、更新操作は作成の直後に呼び出されます。 |
4. |
A B (読み取り専用) C D E (読み取り専用) |
A B |
A C |
作成: 既定 EL フォームでのみ許可 更新: 許可しない オフライン作成: 許可しない オフライン更新: 許可しない |
フィールド D を更新することができません。この不整合により、BCS は更新操作を無効にします。 有効な更新操作がないため、オフライン作成は無効になります。 |
5. |
A B (読み取り専用) C D E (読み取り専用) |
A C D |
定義された更新操作はありません |
作成: 許可 更新: 許可しない オフライン作成: 許可 オフライン更新: 許可しない |
フィールド B とフィールド E の値は、外部システムによって割り当てられます。 |
6. |
A B (読み取り専用) C D E (読み取り専用) |
A B C |
定義された更新操作はありません |
作成: 既定 EL フォームでのみ許可 更新: 許可しない オフライン作成: 許可しない オフライン更新: 許可しない |
フィールド D の値は作成中に設定できず、後でそれを設定する有効な更新操作が定義されていません。このため、BCS は、オフライン作成操作を無効にします。 |
注意
NULL 値が適切に処理されていることを確認してください。フィールドが必要であるかどうか検証し、不要なフィールドに NULL を割り当てないでください。
注意 |
---|
パラメーターの名前は外部システムで定義された名前と一致する必要があります。パラメーターの名前では、大文字小文字を区別します。パラメーターの名前がすべてのメソッドで同一ではない場合は、Microsoft SharePoint Designer 2010 はそれらを異なるフィールドと解釈します。 |
例外を適切に処理することは重要です。Updater の事例にはいくつかの重要な例外が含まれており、表 2 に示されています。
表 2. 例外
例外名 |
例外を使用する場合 |
---|---|
AccessDeniedException |
ユーザーは、外部システムでこの操作を実行することはできません。 |
ConflictDetectedException |
競合解決のために使用されます。アイテムが同時に更新され、別のユーザーによって変更されました。 |
LobBusinessErrorException |
(外部システムからの) エラー メッセージが、そのままユーザーに表示されます。 |
ObjectDeletedException |
アイテムが削除されていることが分かっている場合は、この例外を使用します。 |
ObjectNotFoundException |
アイテムが見つかりません。 |
RuntimeException |
更新が失敗した場合、ユーザーに警告し、Microsoft Outlook 2010 と Microsoft SharePoint Workspace 2010 のエラー処理機能を使用するために、この例外を必ず使用してください。 |