ObjectDataSource.CacheExpirationPolicy 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 comportamento di scadenza della cache che, in combinazione con la durata, descrive il comportamento della cache utilizzata dal controllo origine dati.
public:
virtual property System::Web::UI::DataSourceCacheExpiry CacheExpirationPolicy { System::Web::UI::DataSourceCacheExpiry get(); void set(System::Web::UI::DataSourceCacheExpiry value); };
public virtual System.Web.UI.DataSourceCacheExpiry CacheExpirationPolicy { get; set; }
member this.CacheExpirationPolicy : System.Web.UI.DataSourceCacheExpiry with get, set
Public Overridable Property CacheExpirationPolicy As DataSourceCacheExpiry
Valore della proprietà
Uno dei DataSourceCacheExpiry valori. Il valore predefinito è Absolute.
Esempio
Questa sezione contiene due esempi di codice. Il primo esempio di codice illustra come un ObjectDataSource oggetto supporta il filtraggio e 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 e il filtro con un ObjectDataSource oggetto .
Nell'esempio di codice seguente viene illustrato come un ObjectDataSource controllo supporta il filtro e la memorizzazione nella cache. Per abilitare il filtro e 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 memorizzazione nella cache è abilitata perché l'oggetto EmployeeLogic restituisce dati come DataSet, la EnableCaching proprietà è impostata su truee le CacheDuration proprietà e CacheExpirationPolicy vengono impostate. 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 e il filtro con un ObjectDataSource controllo . Nell'implementazione di base della EmployeeLogic classe , il GetAllEmployees metodo restituisce un oggetto ArrayList. 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 business usato ObjectDataSource da . Quando la cache scade, il Select metodo recupera i dati dall'oggetto business e quindi memorizza nuovamente i dati nella cache.
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 rimossa. Il valore 0 indica un periodo di cache infinitamente lungo.
La cache è regolamentata da una combinazione della durata e dell'impostazione CacheExpirationPolicy . Se la CacheExpirationPolicy proprietà è impostata sul Absolute valore , memorizza nella ObjectDataSource cache i dati nella prima chiamata al Select metodo e lo mantiene in memoria al massimo per la quantità di tempo specificata dalla CacheDuration proprietà . I dati potrebbero essere rilasciati prima del tempo di durata, se è necessaria la memoria. La cache viene quindi aggiornata durante la chiamata successiva al Select metodo . Se la CacheExpirationPolicy proprietà è impostata sul Sliding valore , 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 per 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 .