Esta documentación está archivada y no tiene mantenimiento.

ObjectDataSource.CacheDuration (Propiedad)

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.

Espacio de nombres: System.Web.UI.WebControls
Ensamblado: System.Web (en system.web.dll)

[TypeConverterAttribute(typeof(DataSourceCacheDurationConverter))] 
public virtual int CacheDuration { get; set; }
/** @property */
public int get_CacheDuration ()

/** @property */
public void set_CacheDuration (int value)

public function get CacheDuration () : int

public function set CacheDuration (value : int)

No aplicable.

Valor de propiedad

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. No puede ser un valor negativo.

El control ObjectDataSource admite el almacenamiento de datos en caché. Mientras los datos están almacenados en la caché, las llamadas al método Select recuperan los datos de la caché, y no del objeto comercial con el que trabaja ObjectDataSource. Cuando la caché caduca, el método Select recupera los datos del objeto comercial y después almacena otra vez los datos en memoria caché.

NotaNota:

Si no está familiarizado con las características de acceso a datos en ASP.NET 2.0, debe leer alguno de estos temas antes de continuar:

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

La caché se regula mediante una combinación de la duración y la configuración de CacheExpirationPolicy. Si la propiedad CacheExpirationPolicy se establece en el valor Absolute, ObjectDataSource almacena los datos en caché en la primera llamada al método Select y los mantiene en la memoria, como máximo, durante el tiempo que especifica la propiedad CacheDuration. Si se necesitara la memoria, los datos se podrían liberar antes del tiempo previsto. Posteriormente, la caché se actualiza durante la llamada siguiente al método Select. Si la propiedad CacheExpirationPolicy se establece en el valor Sliding, el control de origen de datos almacena en caché los datos en la primera llamada al método Select, pero restablece el intervalo de tiempo durante el cual mantiene la caché en cada llamada posterior al método Select. La caché caduca si no se produce ninguna actividad durante un tiempo igual al que indica la propiedad CacheDuration desde la última llamada al método Select.

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

En el ejemplo de código siguiente se muestra cómo un control ObjectDataSource admite el almacenamiento en caché. Para habilitar el almacenamiento en caché, implemente el método que recupera los datos, que se identifica mediante la propiedad SelectMethod, de manera que devuelva los datos como un objeto DataSet. En este ejemplo, la propiedad EnableCaching se establece en true y se establecen las propiedades CacheDuration y CacheExpirationPolicy. El objeto ObjectDataSource almacena en memoria caché durante 30 segundos los datos que devuelve la propiedad SelectMethod.

<%@ 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.jsl" Assembly="Samples.AspNet.jsl" %>
<%@ Page Language="VJ#" %>
<!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 - VJ# 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.jsl.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 objeto DataSet para habilitar el almacenamiento en caché con un control ObjectDataSource. En la implementación base de la clase EmployeeLogic, el método GetAllEmployees devuelve un objeto ArrayList. En lugar de refactorizar el objeto completamente para trabajar con ObjectDataSource en una página de formularios Web Forms, se agrega un método contenedor denominado GetAllEmployeesAsDataSet que devuelve un conjunto de datos NorthwindEmployee como un DataSet.

Este ejemplo de código forma parte de un ejemplo más extenso referente a la clase ObjectDataSource.

//
// 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 static DataSet GetAllEmployeesAsDataSet() throws NorthwindDataException
{
    ICollection employees = GetAllEmployees();

    DataSet ds = new DataSet("Table");
    // Create the schema of the DataTable.
    DataTable dt = new DataTable();
    DataColumn dc;
    dc = new DataColumn("FirstName", String.class.ToType());
    dt.get_Columns().Add(dc);
    dc = new DataColumn("LastName", String.class.ToType());
    dt.get_Columns().Add(dc);
    dc = new DataColumn("Title", String.class.ToType());
    dt.get_Columns().Add(dc);
    dc = new DataColumn("Courtesy", String.class.ToType());
    dt.get_Columns().Add(dc);
    dc = new DataColumn("Supervisor", Int32.class.ToType());
    dt.get_Columns().Add(dc);
    // Add rows to the DataTable.
    IEnumerator emplEnum = employees.GetEnumerator();
    DataRow row;
    NorthwindEmployee ne;
    while (emplEnum.MoveNext()) {
        ne = (NorthwindEmployee)emplEnum.get_Current();
        row = dt.NewRow();
        row.set_Item("FirstName", ne.get_FirstName());
        row.set_Item("LastName", ne.get_LastName());
        row.set_Item("Title", ne.get_Title());
        row.set_Item("Courtesy", ne.get_Courtesy());
        row.set_Item("Supervisor", (Int32)ne.get_Supervisor());
        dt.get_Rows().Add(row);
    }
    // Add the complete DataTable to the DataSet.
    ds.get_Tables().Add(dt);

    return ds;
} //GetAllEmployeesAsDataSet


Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0
Mostrar: