LinqDataSource.StoreOriginalValuesInViewState 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定值,這個值表示資料來源的資料是否應在檢視狀態中進行儲存,以確定在更新或刪除資料前,資料未由另一個處理序變更。
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
屬性值
如果在檢視狀態中儲存值則為 true
,否則為 false
。 預設值是 true
。
備註
根據預設,當已啟用更新和刪除作業時, LinqDataSource 控制項會儲存檢視狀態中所有記錄的原始值。 控制項 LinqDataSource 會儲存所有主鍵的值,以及屬性中 Column
未標示 UpdateCheck.Never
的所有屬性。 您可以在 O/R 設計工具中設定 UpdateCheck
屬性的屬性 Column
。
在LINQ to SQL更新或刪除資料之前,它會根據資料來源中的目前值,檢查檢視狀態中的值。 如果值不相符,資料來源記錄已變更。 在此情況下,LINQ to SQL擲回例外狀況,而且不會繼續更新或刪除作業。 如需LINQ to SQL的詳細資訊,請參閱LINQ to SQL。
將原始值儲存在檢視狀態可能會導致頁面大小變得不必要的大,而且可以將敏感性資料公開給惡意使用者。 您可以將 屬性設定 StoreOriginalValuesInViewState 為 false
,以停用將值儲存在檢視狀態。 如果您這樣做,您必須提供自己的方式,以確保資料尚未變更。 如果您將 StoreOriginalValuesInViewState 屬性設定為 false
,則原始值不會保存在資料繫結控制項的檢視狀態。 在此情況下,LINQ to SQL無法驗證資料的完整性。 LINQ to SQL會擲回例外狀況,指出即使資料來源中的資料尚未實際變更也一樣發生資料衝突。
如果基礎資料來源包含更新期間自動更新的時間戳記欄位,您只能將該值儲存在檢視狀態中。 在此情況下,實體類別中的 timestamp 屬性會設定為 IsVersion=true
,而且所有屬性都會設定為 UpdateCheck.Never
。 因為每次該記錄中的資料變更時,資料庫都會自動更新時間戳記欄位,LINQ to SQL如果資料已變更,就會從該值決定。 這有助於減少檢視狀態的大小,而且不會公開任何敏感性資料。 LINQ to SQL會藉由比較檢視狀態中的時間戳記值與資料庫中的時間戳記值,來檢查資料一致性。 如需詳細資訊,請參閱逐步解說 :搭配 LinqDataSource 控制項使用時間戳來檢查資料完整性。