ObjectDataSource.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 dalla proprietà SelectMethod.
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 ObjectDataSource memorizza nella cache i risultati di una chiamata della proprietà SelectMethod. Il valore predefinito è 0. Il valore non può essere negativo.
- Attributi
Esempio
In questa sezione sono riportati due esempi di codice. Il primo esempio di codice illustra come un ObjectDataSource oggetto supporta la memorizzazione nella cache. Il secondo esempio di codice illustra come implementare un metodo wrapper che restituisce un DataSet oggetto per abilitare la memorizzazione nella cache con un ObjectDataSource oggetto .
Nell'esempio di codice seguente viene illustrato come un ObjectDataSource controllo supporta la memorizzazione nella cache. Per abilitare la SelectMethod memorizzazione nella cache, è necessario implementare il metodo che recupera i dati, identificati dalla proprietà , per restituire i dati come DataSet oggetto . In questo esempio la EnableCaching proprietà è impostata su true
e vengono impostate le CacheDuration proprietà e CacheExpirationPolicy . Memorizza ObjectDataSource nella cache i dati restituiti dalla SelectMethod proprietà per 30 secondi.
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
<%@ 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>
<title>ObjectDataSource - C# Example</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:gridview
id="GridView1"
runat="server"
datasourceid="ObjectDataSource1" />
<asp:objectdatasource
id="ObjectDataSource1"
runat="server"
typename="Samples.AspNet.CS.EmployeeLogic"
selectmethod="GetAllEmployeesAsDataSet"
enablecaching="True"
cacheduration="30"
cacheexpirationpolicy="Absolute" />
</form>
</body>
</html>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" Assembly="Samples.AspNet.VB" %>
<%@ 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>
<title>ObjectDataSource - VB Example</title>
</head>
<body>
<form id="Form1" method="post" runat="server">
<asp:gridview
id="GridView1"
runat="server"
datasourceid="ObjectDataSource1" />
<asp:objectdatasource
id="ObjectDataSource1"
runat="server"
typename="Samples.AspNet.VB.EmployeeLogic"
selectmethod="GetAllEmployeesAsDataSet"
enablecaching="True"
cacheduration="30"
cacheexpirationpolicy="Absolute" />
</form>
</body>
</html>
Nell'esempio di codice seguente viene illustrato come implementare un metodo wrapper che restituisce un DataSet oggetto per abilitare la memorizzazione nella cache con un ObjectDataSource controllo . Nell'implementazione di base della EmployeeLogic
classe il GetAllEmployees
metodo restituisce un ArrayList oggetto . Anziché effettuare il refactoring completo dell'oggetto per lavorare con in ObjectDataSource una pagina Web Form, viene aggiunto un metodo wrapper denominato GetAllEmployeesAsDataSet
che restituisce un set di NorthwindEmployee
dati come .DataSet
Questo esempio di codice fa parte di un esempio più ampio fornito per la ObjectDataSource classe .
//
// To support basic filtering, the employees cannot
// be returned as an array of objects, rather as a
// DataSet of the raw data values.
public static DataSet GetAllEmployeesAsDataSet () {
ICollection employees = GetAllEmployees();
DataSet ds = new DataSet("Table");
// Create the schema of the DataTable.
DataTable dt = new DataTable();
DataColumn dc;
dc = new DataColumn("FirstName", typeof(string)); dt.Columns.Add(dc);
dc = new DataColumn("LastName", typeof(string)); dt.Columns.Add(dc);
dc = new DataColumn("Title", typeof(string)); dt.Columns.Add(dc);
dc = new DataColumn("Courtesy", typeof(string)); dt.Columns.Add(dc);
dc = new DataColumn("Supervisor",typeof(Int32)); dt.Columns.Add(dc);
// Add rows to the DataTable.
IEnumerator emplEnum = employees.GetEnumerator();
DataRow row;
NorthwindEmployee ne;
while (emplEnum.MoveNext()) {
ne = emplEnum.Current as NorthwindEmployee;
row = dt.NewRow();
row["FirstName"] = ne.FirstName;
row["LastName"] = ne.LastName;
row["Title"] = ne.Title;
row["Courtesy"] = ne.Courtesy;
row["Supervisor"] = ne.Supervisor;
dt.Rows.Add(row);
}
// Add the complete DataTable to the DataSet.
ds.Tables.Add(dt);
return ds;
}
' To support basic filtering, the employees cannot
' be returned as an array of objects, rather as a
' DataSet of the raw data values.
Public Shared Function GetAllEmployeesAsDataSet() As DataSet
Dim employees As ICollection = GetAllEmployees()
Dim ds As New DataSet("Table")
' Create the schema of the DataTable.
Dim dt As New DataTable()
Dim dc As DataColumn
dc = New DataColumn("FirstName", GetType(String))
dt.Columns.Add(dc)
dc = New DataColumn("LastName", GetType(String))
dt.Columns.Add(dc)
dc = New DataColumn("Title", GetType(String))
dt.Columns.Add(dc)
dc = New DataColumn("Courtesy", GetType(String))
dt.Columns.Add(dc)
dc = New DataColumn("Supervisor", GetType(Int32))
dt.Columns.Add(dc)
' Add rows to the DataTable.
Dim emplEnum As IEnumerator = employees.GetEnumerator()
Dim row As DataRow
Dim ne As NorthwindEmployee
While emplEnum.MoveNext()
ne = CType(emplEnum.Current, NorthwindEmployee)
row = dt.NewRow()
row("FirstName") = ne.FirstName
row("LastName") = ne.LastName
row("Title") = ne.Title
row("Courtesy") = ne.Courtesy
row("Supervisor") = ne.Supervisor
dt.Rows.Add(row)
End While
' Add the complete DataTable to the DataSet.
ds.Tables.Add(dt)
Return ds
End Function 'GetAllEmployeesAsDataSet
Commenti
Il controllo supporta la ObjectDataSource memorizzazione nella cache dei dati. Mentre i dati vengono memorizzati nella cache, le chiamate al Select metodo recuperano i dati dalla cache anziché dall'oggetto ObjectDataSource business usato da . Alla scadenza della cache, il Select metodo recupera i dati dall'oggetto business e quindi memorizza nuovamente nella cache i dati.
Il ObjectDataSource 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.
La cache è regolamentata da una combinazione della durata e dell'impostazione CacheExpirationPolicy . Se la CacheExpirationPolicy proprietà è impostata Absolute sul valore , memorizza nella cache i ObjectDataSource dati nella prima chiamata al Select metodo e lo mantiene in memoria per, al massimo, 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 la chiamata successiva al Select metodo . Se la CacheExpirationPolicy proprietà è impostata su Sliding value, il controllo origine dati memorizza nella cache i dati nella prima chiamata al Select metodo, ma reimposta l'intervallo di tempo per il quale contiene la cache in ogni chiamata successiva al Select metodo . La cache scade se non è presente alcuna attività per un periodo di tempo uguale alla CacheDuration proprietà dall'ultima chiamata al Select metodo .