次の方法で共有


データの更新 (EntityDataSource)

更新 : 2007 年 11 月

EntityDataSource コントロールを使用すると、GridView コントロール、DetailsView コントロール、FormView コントロールなどのデータ バインド コントロールから、データ ソースに更新を送信できます。EntityDataSource コントロールは、ObjectContext クラスのインスタンスを使用して、更新された値をデータベースに送信します。

データの更新に関する考慮事項

EntityDataSource コントロールを使用して更新、挿入、および削除をデータ ソースに送信する場合は、次の考慮事項に注意してください。

  • データを更新するには、少なくとも EnableInserts()、EnableUpdates()、EnableDeletes() のいずれかのプロパティを true に設定する必要があります。

  • EntityDataSource コントロールを使用してデータ ソースを更新する場合は、一度に 1 つのオブジェクトの更新のみを送信できます。

  • 更新が有効になっている場合は、EntityDataSource コントロールの CommandTextSelect、および GroupBy の各プロパティは使用できません。

  • ObjectContext でオブジェクトの追加、変更、および削除を行うことにより、データ バインド コントロールの外部からデータ ソースに更新を送信できます。詳細については、「オブジェクトを追加、変更、および削除する方法 (Entity Framework)」を参照してください。SaveChanges メソッドを呼び出して ObjectContext 内の変更をデータ ソースにコミットしたら、データ バインド コントロールの DataBind メソッドを呼び出して、データ ソースの最新のデータでコントロールを更新します。

ビュー ステートへのオブジェクト データの格納

更新操作が有効になっている場合に変更を追跡するために、EntityDataSource コントロールでは、読み込まれたオブジェクトのプロパティの元の値に関する情報をページのビュー ステートに格納する必要があります。HTTP 要求間でオブジェクトのプロパティの元の値を保持することにより、Object Services は、元の値と現在の値を比較して同時実行を管理します。同時実行を管理する方法の詳細については、「変更の追跡および ID 解決 (Entity Framework)」を参照してください。

この必要な情報をビュー ステートに格納すると、ページ サイズが大きくなります。ビュー ステートへの値の格納を無効にするには、StoreOriginalValuesInViewState プロパティを false に設定します。このようにした場合、Object Services では更新されたオブジェクトの同時実行を追跡できなくなるため、独自に同時実行のチェックを実装する必要があります。このチェックでは、データ バインド コントロールで行われた更新が、データ ソースで行われた変更と競合しないようにする必要があります。詳細については、「変更の保存と同時実行制御の管理 (Entity Framework)」を参照してください。

参照

概念

EntityDataSource コントロールの構成

EntityDataSource デザイナ

オブジェクト コンテキストの有効期間の管理 (EntityDataSource)

その他の技術情報

オブジェクトの使用 (Entity Framework)