ObjectDataSource.CacheExpirationPolicy Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define o comportamento de expiração de cache que, quando combinado com a duração, descreve o comportamento do cache usado pelo controle de fonte de dados.
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 da propriedade
Um dos valores de DataSourceCacheExpiry. O padrão é Absolute.
Exemplos
Esta seção contém dois exemplos de código. O primeiro exemplo de código demonstra como um ObjectDataSource objeto dá suporte à filtragem e ao cache. O segundo exemplo de código demonstra como implementar um método wrapper que retorna um DataSet objeto para habilitar o cache e a filtragem com um ObjectDataSource objeto .
O exemplo de código a seguir demonstra como um ObjectDataSource controle dá suporte à filtragem e ao cache. Para habilitar a filtragem e o cache, você deve implementar o método que recupera dados, que é identificado pela SelectMethod propriedade , para retornar os dados como um DataSet objeto . Neste exemplo, o cache está habilitado porque o EmployeeLogic
objeto retorna dados como um DataSet, a EnableCaching propriedade é definida true
como e as CacheDuration propriedades e CacheExpirationPolicy são definidas. Os ObjectDataSource dados são armazenados em cache retornados pela SelectMethod propriedade por 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>
O exemplo de código a seguir demonstra como implementar um método wrapper que retorna um DataSet objeto para habilitar o cache e a filtragem com um ObjectDataSource controle . Na implementação base da EmployeeLogic
classe , o GetAllEmployees
método retorna um ArrayList. Em vez de refatorar completamente o objeto para trabalhar com o em uma página do ObjectDataSource Web Forms, um método wrapper chamado GetAllEmployeesAsDataSet
é adicionado que retorna um conjunto de NorthwindEmployee
dados como um DataSet. Este exemplo de código faz parte de um exemplo maior fornecido para a 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
Comentários
O controle dá suporte ao ObjectDataSource cache de dados. Enquanto os dados são armazenados em cache, as chamadas para o Select método recuperam dados do cache em vez do objeto de negócios com o qual o ObjectDataSource funciona. Quando o cache expira, o Select método recupera dados do objeto comercial e armazena os dados em cache novamente.
O ObjectDataSource controle armazena dados automaticamente em cache quando a EnableCaching propriedade é definida true
como e a CacheDuration propriedade é definida como um valor maior que 0, o que indica o número de segundos que o cache armazena dados antes que a entrada de cache seja descartada. Um valor de 0 indica um período de cache infinitamente longo.
O cache é regulamentado por uma combinação da duração e da CacheExpirationPolicy configuração. Se a CacheExpirationPolicy propriedade for definida como o Absolute valor , o armazenará em cache os ObjectDataSource dados na primeira chamada para o método e os Select manterá na memória para, no máximo, a quantidade de tempo especificada pela CacheDuration propriedade . Os dados poderão ser liberados antes do tempo de duração, se a memória for necessária. Em seguida, o cache é atualizado durante a próxima chamada para o Select método . Se a CacheExpirationPolicy propriedade for definida como o Sliding valor , o controle da fonte de dados armazenará em cache os dados na primeira chamada para o Select método , mas redefinirá a janela de tempo para a qual mantém o cache para cada chamada subsequente ao Select método . O cache expirará se não houver nenhuma atividade por um tempo igual à CacheDuration propriedade desde a última chamada para o Select método .