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

将原始值存储在视图状态可能会导致页面大小变得不必要的大,并且可能会向恶意用户公开敏感数据。 通过将属性设置为 StoreOriginalValuesInViewState false.,可以禁用以视图状态存储值。 如果执行此操作,则必须提供自己的方法来确保数据未更改。 如果将属性false设置为StoreOriginalValuesInViewState,则原始值不会保留在数据绑定控件的视图状态中。 在这种情况下,LINQ to SQL无法验证数据的完整性。 LINQ to SQL将引发指示数据冲突的异常,即使数据源中的数据未实际更改也是如此。

如果基础数据源包含更新期间自动更新的时间戳字段,则只能将该值存储在视图状态中。 在这种情况下,实体类中的 timestamp 属性设置为 IsVersion=true ,并且所有属性都设置为 UpdateCheck.Never。 由于每次该记录中的数据发生更改时,数据库都会自动更新时间戳字段,因此LINQ to SQL根据该值确定数据是否已更改。 这有助于减小视图状态的大小,并且不会公开任何敏感数据。 LINQ to SQL通过将视图状态中的时间戳值与数据库中的时间戳值进行比较来检查数据一致性。 有关详细信息,请参阅 演练:将时间戳与 LinqDataSource 控件配合使用以检查数据完整性

适用于

另请参阅