ObjectDataSource.CacheExpirationPolicy Proprietà

Definizione

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 oggetto DataSet, la EnableCaching proprietà è impostata su truee 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 . Invece di eseguire il refactoring dell'oggetto completamente per lavorare con in ObjectDataSource una 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.

Si applica a

Vedi anche