Condividi tramite


ObjectDataSource.CacheDuration Proprietà

Definizione

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 truee 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 .

Si applica a

Vedi anche