SqlDataSource.CacheDuration Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define a duração, em segundos, em que o controle de fonte de dados armazena em cache os dados recuperados pelo método Select(DataSourceSelectArguments).
public:
virtual property int CacheDuration { int get(); void set(int value); };
[System.ComponentModel.TypeConverter(typeof(System.Web.UI.DataSourceCacheDurationConverter))]
public virtual int CacheDuration { get; set; }
[<System.ComponentModel.TypeConverter(typeof(System.Web.UI.DataSourceCacheDurationConverter))>]
member this.CacheDuration : int with get, set
Public Overridable Property CacheDuration As Integer
Valor da propriedade
O número de segundos que o SqlDataSource armazena em cache os resultados de uma operação Select(DataSourceSelectArguments). O padrão é 0. O valor não pode ser negativo.
- Atributos
Exemplos
O exemplo de código a seguir demonstra como recuperar dados do banco de dados Northwind no Microsoft SQL Server e exibi-los em um GridView controle , com o cache de dados habilitado. O CacheDuration é definido como 20 segundos e, como a CacheExpirationPolicy propriedade é definida como o Absolute valor por padrão, os usuários dessa página verão dados atualizados a cada 20 segundos.
<%@ 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>
Comentários
O controle dá suporte ao SqlDataSource cache de dados. Enquanto os dados são armazenados em cache, o Select método recupera dados do cache em vez do banco de dados subjacente. Quando o cache expira, o Select método recupera dados do banco de dados subjacente e armazena os dados em cache novamente.
O SqlDataSource controle armazena dados automaticamente em cache quando a EnableCaching propriedade é definida true
como e a CacheDuration propriedade é definida como um valor maior que 0, o que indica o número de segundos que o cache armazena dados antes que a entrada de cache seja descartada. Um valor de 0 indica um cache infinitamente longo.
O comportamento do cache é determinado por uma combinação da duração e da CacheExpirationPolicy propriedade . Se a CacheExpirationPolicy propriedade for definida como o Absolute valor , os SqlDataSource dados serão armazenados em cache na primeira operação de recuperação de dados e os manterão na memória para, no máximo, a quantidade de tempo especificada pela CacheDuration propriedade . Os dados poderão ser liberados antes do tempo de duração, se a memória for necessária. Em seguida, o cache é atualizado durante a próxima operação. Se a CacheExpirationPolicy propriedade for definida como o Sliding valor , o controle da fonte de dados armazenará dados em cache na primeira operação de recuperação de dados, mas redefinirá a janela de tempo em que ela mantém o cache para cada operação subsequente. O cache expira, se não houver nenhuma atividade por um tempo igual ao CacheDuration valor desde a última Select operação.
O SqlDataSource controle só pode armazenar dados em cache quando estiver no DataSet modo . Uma NotSupportedException exceção será gerada pelo Select método , se o SqlDataSource controle estiver definido como o valor e o DataReader cache também estiver habilitado.
Importante
Quando você estiver usando a representação do cliente na autenticação do Microsoft Windows, os dados serão armazenados em cache quando o primeiro usuário acessar os dados. Se outro usuário solicitar os mesmos dados, os dados serão recuperados do cache. Os dados não são recuperados fazendo outra chamada para o banco de dados para verificar o acesso do usuário aos dados. Se você espera que mais de um usuário acesse os dados e deseja que cada recuperação dos dados seja verificada pelas configurações de segurança do banco de dados, não use cache.