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 會儲存所有主鍵的值,以及屬性中 Column 未標示 UpdateCheck.Never 的所有屬性。 您可以在 O/R 設計工具中設定 UpdateCheck 屬性的屬性 Column

在LINQ to SQL更新或刪除資料之前,它會根據資料來源中的目前值,檢查檢視狀態中的值。 如果值不相符,資料來源記錄已變更。 在此情況下,LINQ to SQL擲回例外狀況,而且不會繼續更新或刪除作業。 如需LINQ to SQL的詳細資訊,請參閱LINQ to SQL

將原始值儲存在檢視狀態可能會導致頁面大小變得不必要的大,而且可以將敏感性資料公開給惡意使用者。 您可以將 屬性設定 StoreOriginalValuesInViewStatefalse ,以停用將值儲存在檢視狀態。 如果您這樣做,您必須提供自己的方式,以確保資料尚未變更。 如果您將 StoreOriginalValuesInViewState 屬性設定為 false ,則原始值不會保存在資料繫結控制項的檢視狀態。 在此情況下,LINQ to SQL無法驗證資料的完整性。 LINQ to SQL會擲回例外狀況,指出即使資料來源中的資料尚未實際變更也一樣發生資料衝突。

如果基礎資料來源包含更新期間自動更新的時間戳記欄位,您只能將該值儲存在檢視狀態中。 在此情況下,實體類別中的 timestamp 屬性會設定為 IsVersion=true ,而且所有屬性都會設定為 UpdateCheck.Never 。 因為每次該記錄中的資料變更時,資料庫都會自動更新時間戳記欄位,LINQ to SQL如果資料已變更,就會從該值決定。 這有助於減少檢視狀態的大小,而且不會公開任何敏感性資料。 LINQ to SQL會藉由比較檢視狀態中的時間戳記值與資料庫中的時間戳記值,來檢查資料一致性。 如需詳細資訊,請參閱逐步解說 :搭配 LinqDataSource 控制項使用時間戳來檢查資料完整性

適用於

另請參閱