次の方法で共有


LinqDataSource.StoreOriginalValuesInViewState プロパティ

定義

データ ソースから取得するデータをビューステートに保存して、そのデータが更新または削除される前に別のプロセスによって変更されていないことを確認する値を取得または設定します。

public:
 property bool StoreOriginalValuesInViewState { bool get(); void set(bool value); };
public bool StoreOriginalValuesInViewState { get; set; }
member this.StoreOriginalValuesInViewState : bool with get, set
Public Property StoreOriginalValuesInViewState As Boolean

プロパティ値

Boolean

値をビューステートに保存する場合は true。それ以外の場合は false。 既定値は true です。

注釈

既定では、更新操作と削除操作が有効になっている場合、 LinqDataSource コントロールはビュー ステート内のすべてのレコードの元の値を格納します。 コントロールには LinqDataSource 、属性でマーク UpdateCheck.Never されていないすべての主キーとすべてのプロパティの値が Column 格納されます。 属性のプロパティはUpdateCheck``Column、O/R デザイナーで設定します。

データLINQ to SQL更新または削除する前に、ビュー ステートの値がデータ ソース内の現在の値と照合されます。 値が一致しない場合は、データ ソース レコードが変更されています。 その場合、LINQ to SQLは例外をスローし、更新または削除操作を続行しません。 LINQ to SQLの詳細については、LINQ to SQLを参照してください。

元の値をビューステートに格納すると、ページ サイズが不必要に大きくなり、悪意のあるユーザーに機密データが公開される可能性があります。 プロパティfalseを 〘に設定すると、ビューステートでの値の格納をStoreOriginalValuesInViewState無効にできます。 これを行う場合は、データが変更されていないことを確認する独自の方法を提供する必要があります。 プロパティfalseStoreOriginalValuesInViewState設定した場合、元の値はデータ バインド コントロールのビューステートに保持されません。 その場合、LINQ to SQLはデータの整合性を検証できません。 LINQ to SQLは、データ ソース内のデータが実際に変更されていない場合でも、データの競合を示す例外をスローします。

基になるデータ ソースに、更新中に自動的に更新されるタイムスタンプ フィールドが含まれている場合は、その値のみをビューステートに格納できます。 その場合、エンティティ クラスの timestamp プロパティが設定 IsVersion=true され、すべてのプロパティが UpdateCheck.Never. タイムスタンプ フィールドは、そのレコード内のデータが変更されるたびにデータベースによって自動的に更新されるため、データが変更された場合、LINQ to SQLはその値から判断されます。 これにより、ビュー ステートのサイズを小さくし、機密データは公開されません。 LINQ to SQLは、ビューステートのタイムスタンプ値とデータベース内のタイムスタンプ値を比較することで、データの整合性をチェックします。 詳細については、「 チュートリアル: LinqDataSource コントロールでタイムスタンプを使用してデータの整合性をチェックする」を参照してください。

適用対象

こちらもご覧ください