ObjectDataSource.CacheExpirationPolicy Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 los datos, que se identifican 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 DataSet, la EnableCaching propiedad se establece true
en 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é y el filtrado con un ObjectDataSource control . En la implementación base de la EmployeeLogic
clase , el GetAllEmployees
método devuelve un ArrayList. En lugar de refactorizar completamente el objeto para trabajar con en ObjectDataSource una página de Formularios 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 más grande 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 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 el período de tiempo para el 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 .