ObjectDataSource.CacheDuration Propiedad

Definición

Obtiene o establece el período de tiempo, en segundos, que el control de origen de datos almacena en memoria caché los datos recuperados por la propiedad 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

Valor de propiedad

Int32

Número de segundos que ObjectDataSource almacena en memoria caché los resultados de una invocación de la propiedad SelectMethod. El valor predeterminado es 0. El valor no puede ser negativo.

Atributos

Ejemplos

Esta sección contiene dos ejemplos de código. En el primer ejemplo de código se muestra cómo un ObjectDataSource objeto admite el almacenamiento en caché. En el segundo ejemplo de código se muestra cómo implementar un método contenedor que devuelve un DataSet objeto para habilitar el almacenamiento en caché con un ObjectDataSource objeto .

En el ejemplo de código siguiente se muestra cómo un ObjectDataSource control admite el almacenamiento en caché. Para habilitar el almacenamiento en caché, debe implementar el método que recupera datos, que se identifica mediante la SelectMethod propiedad , para devolver los datos como un DataSet objeto. En este ejemplo, la EnableCaching propiedad se establece trueen y las CacheDuration propiedades y CacheExpirationPolicy se establecen. Almacena ObjectDataSource en caché los datos devueltos por la SelectMethod propiedad durante 30 segundos.

<%@ 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>

En el ejemplo de código siguiente se muestra cómo implementar un método contenedor que devuelve un DataSet objeto para habilitar el almacenamiento en caché con un ObjectDataSource control . En la implementación base de la EmployeeLogic clase , el GetAllEmployees método devuelve un ArrayList objeto . En lugar de refactorizar completamente el objeto para trabajar con en ObjectDataSource una página de Web Forms, se agrega un método contenedor denominado GetAllEmployeesAsDataSet que devuelve un conjunto de NorthwindEmployee datos como .DataSet

Este ejemplo de código forma parte de un ejemplo más grande proporcionado para la ObjectDataSource clase .

//
// 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

Comentarios

El ObjectDataSource control admite el almacenamiento en caché de datos. Mientras se almacenan en caché los datos, las llamadas al Select método recuperan datos de la memoria caché en lugar del objeto de negocio con el ObjectDataSource que funciona. Cuando expira la memoria caché, el Select método recupera datos del objeto de negocio y, a continuación, vuelve a almacenar en caché los datos.

El ObjectDataSource control almacena automáticamente en caché los datos cuando la EnableCaching propiedad está establecida true en y la CacheDuration propiedad se establece en un valor mayor que 0, lo que indica el número de segundos en que la memoria caché almacena los datos antes de que se descarte la entrada de caché. Un valor de 0 indica una caché infinitamente larga.

La memoria caché está regulada por una combinación de la duración y la CacheExpirationPolicy configuración. Si la CacheExpirationPolicy propiedad se establece en el Absolute valor, almacena en caché los ObjectDataSource datos de la primera llamada al Select método y los mantiene en memoria durante, como máximo, la cantidad de tiempo especificada por la CacheDuration propiedad . Es posible que los datos se libere antes del tiempo de duración, si se necesita memoria. A continuación, la memoria caché se actualiza durante la siguiente llamada al Select método . Si la CacheExpirationPolicy propiedad se establece Sliding en valor, el control de origen de datos almacena en caché los datos de la primera llamada al Select método, pero restablece la ventana de tiempo para la que contiene la memoria caché en cada llamada posterior al Select método. La memoria caché expira si no hay ninguna actividad durante un tiempo igual a la CacheDuration propiedad desde la última llamada al Select método .

Se aplica a

Consulte también