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, quando combinato con la durata, descrive il comportamento della cache utilizzato 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 valori di DataSourceCacheExpiry. Il valore predefinito è Absolute.
Esempio
In questa sezione sono riportati due esempi di codice. Il primo esempio di codice illustra come un ObjectDataSource oggetto supporta il filtro 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 memorizzazione nella cache, è necessario implementare il metodo che recupera i dati, identificati dalla SelectMethod proprietà, per restituire i dati come DataSet oggetto. In questo esempio la memorizzazione nella cache è abilitata perché l'oggetto EmployeeLogic
restituisce i dati come DataSetoggetto , la EnableCaching proprietà è impostata su true
e le CacheDuration proprietà e CacheExpirationPolicy vengono impostate. I ObjectDataSource dati memorizzati nella cache 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 ArrayListoggetto . Anziché eseguire il refactoring dell'oggetto completamente per lavorare con la ObjectDataSource pagina Web Forms, 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ù grande 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 con cui funziona ObjectDataSource . Al termine 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. Un valore pari a 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, i ObjectDataSource dati della prima chiamata al Select metodo e lo contiene in memoria per la maggior parte del tempo specificato 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 Select al 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 una volta uguale alla CacheDuration proprietà dall'ultima chiamata al Select metodo.