SqlDataSource.EnableCaching 属性

定义

获取或设置一个值,该值指示 SqlDataSource 控件是否启用数据缓存。

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

属性值

如果为数据源控件启用数据缓存,则为 true;否则为 false。 默认值为 false

例外

EnableCaching 不支持缓存时,SqlDataSource 属性设置为 true

示例

下面的代码示例演示了如何在启用数据缓存的情况下,从 Microsoft SQL Server 中的 Northwind 数据库中检索数据并将其显示在 控件中GridView。 属性 EnableCaching 设置为 true ,设置为 CacheDuration 20 秒。 由于 默认情况下, CacheExpirationPolicy 属性设置为 Absolute 字段,因此此页面的用户将每隔 20 秒看到一次新数据。

<%@ Page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
        <form id="form1" runat="server">

            <asp:SqlDataSource
                id="SqlDataSource1"
                runat="server"
                DataSourceMode="DataSet"
                ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
                EnableCaching="True"
                CacheDuration="20"
                SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees">
            </asp:SqlDataSource>

            <asp:GridView
                id="GridView1"
                runat="server"
                AutoGenerateColumns="False"
                DataSourceID="SqlDataSource1">
                <columns>
                    <asp:BoundField HeaderText="First Name" DataField="FirstName" />
                    <asp:BoundField HeaderText="Last Name" DataField="LastName" />
                    <asp:BoundField HeaderText="Title" DataField="Title" />
                </columns>
            </asp:GridView>

        </form>
    </body>
</html>
<%@ Page language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
        <form id="form1" runat="server">

            <asp:SqlDataSource
                id="SqlDataSource1"
                runat="server"
                DataSourceMode="DataSet"
                ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
                EnableCaching="True"
                CacheDuration="20"
                SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees">
            </asp:SqlDataSource>

            <asp:GridView
                id="GridView1"
                runat="server"
                AutoGenerateColumns="False"
                DataSourceID="SqlDataSource1">
                <columns>
                    <asp:BoundField HeaderText="First Name" DataField="FirstName" />
                    <asp:BoundField HeaderText="Last Name" DataField="LastName" />
                    <asp:BoundField HeaderText="Title" DataField="Title" />
                </columns>
            </asp:GridView>

        </form>
    </body>
</html>

注解

控件 SqlDataSource 支持数据缓存。 缓存数据时, Select 方法从缓存中检索数据,而不是从基础数据库检索数据。 缓存过期时, Select 方法从基础数据库中检索数据,然后再次缓存数据。

当 属性设置为 trueCacheDuration 属性设置为大于 0 的值时EnableCaching,控件SqlDataSource会自动缓存数据,该值指示缓存在检索新集之前存储数据的秒数。

重要

在 Microsoft Windows 身份验证 下使用客户端模拟时,当第一个用户访问数据时,将缓存数据。 如果其他用户请求相同的数据,则会从缓存中检索数据。 通过再次调用数据库来验证用户对数据的访问权限,不会检索数据。 如果希望多个用户访问数据,并且希望对数据的每次检索都由数据库的安全配置进行验证,请不要使用缓存。

适用于

另请参阅