Condividi tramite


SqlDataSource.CacheDuration Proprietà

Definizione

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.

Si applica a

Vedi anche