SqlDataSource.CacheDuration Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta il numero di secondi durante i quali il controllo origine dati memorizza nella cache i dati recuperati dal metodo 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
Valore della proprietà
Numero di secondi durante i quali l'oggetto SqlDataSource memorizza nella cache i risultati di un'operazione del metodo Select(DataSourceSelectArguments). Il valore predefinito è 0. Il valore non può essere negativo.
- Attributi
Esempio
Nell'esempio di codice seguente viene illustrato come recuperare dati dal database Northwind in Microsoft SQL Server e visualizzarli in un GridView controllo, con la memorizzazione nella cache dei dati abilitata. l'oggetto CacheDuration è impostato su 20 secondi e, poiché la CacheExpirationPolicy proprietà è impostata sul Absolute valore per impostazione predefinita, gli utenti di questa pagina visualizzeranno i dati aggiornati ogni 20 secondi.
<%@ 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>
Commenti
Il controllo supporta la SqlDataSource memorizzazione nella cache dei dati. Mentre i dati vengono memorizzati nella cache, il Select metodo recupera i dati dalla cache anziché dal database sottostante. Alla scadenza della cache, il Select metodo recupera i dati dal database sottostante e quindi memorizza nuovamente nella cache i dati.
Il SqlDataSource controllo memorizza automaticamente nella cache i dati quando la EnableCaching proprietà è impostata su true
e la CacheDuration proprietà è impostata su un valore maggiore di 0, che indica il numero di secondi in cui la cache archivia i dati prima che la voce della cache venga eliminata. Il valore 0 indica una cache infinitamente lunga.
Il comportamento della cache è determinato da una combinazione della durata e della CacheExpirationPolicy proprietà . Se la CacheExpirationPolicy proprietà è impostata Absolute sul valore , memorizza nella cache i SqlDataSource dati nella prima operazione di recupero dati, la contiene al massimo in memoria per la quantità di tempo specificata dalla CacheDuration proprietà . I dati potrebbero essere rilasciati prima della durata, se è necessaria la memoria. La cache viene quindi aggiornata durante l'operazione successiva. Se la CacheExpirationPolicy proprietà è impostata Sliding sul valore , il controllo origine dati memorizza nella cache i dati nella prima operazione di recupero dati, ma reimposta l'intervallo di tempo in cui contiene la cache per ogni operazione successiva. La cache scade, se non è presente alcuna attività per un periodo di tempo uguale al CacheDuration valore dall'ultima Select operazione.
Il SqlDataSource controllo può memorizzare nella cache i dati solo quando è in DataSet modalità . Viene NotSupportedException generata un'eccezione dal Select metodo , se il SqlDataSource controllo è impostato sul valore e la memorizzazione nella DataReader cache è abilitata.
Importante
Quando si usa la rappresentazione client con l'autenticazione di Microsoft Windows, i dati vengono memorizzati nella cache quando il primo utente accede ai dati. Se un altro utente richiede gli stessi dati, i dati vengono recuperati dalla cache. I dati non vengono recuperati effettuando un'altra chiamata al database per verificare l'accesso dell'utente ai dati. Se si prevede che più di un utente accinga ai dati e si vuole che ogni recupero ai dati venga verificato dalle configurazioni di sicurezza per il database, non usare la memorizzazione nella cache.