ObjectDataSource.CacheExpirationPolicy Propiedad

Definición

Obtiene o establece el comportamiento de expiración de la memoria caché que, combinado con la duración, describe el comportamiento de almacenamiento en caché que usa el control de origen de datos.

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

Valor de propiedad

Uno de los valores de DataSourceCacheExpiry. De manera predeterminada, es Absolute.

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 filtrado y 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é y el filtrado con un ObjectDataSource objeto .

En el ejemplo de código siguiente se muestra cómo un ObjectDataSource control admite el filtrado y el almacenamiento en caché. Para habilitar el filtrado y 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, el almacenamiento en caché está habilitado porque el EmployeeLogic objeto devuelve datos como , DataSetla EnableCaching propiedad se establece trueen y se establecen las CacheDuration propiedades y CacheExpirationPolicy . 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é y el filtrado con un ObjectDataSource control . En la implementación base de la EmployeeLogic clase , el GetAllEmployees método devuelve .ArrayList En lugar de refactorizar el objeto por completo para trabajar con ObjectDataSource en 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 es parte de un ejemplo mayor proporcionado para 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 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 los 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 se establece 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 un período de caché infinitamente largo.

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 en el Sliding 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é para 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