ObjectDataSource.CacheExpirationPolicy Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit le comportement d’expiration du cache qui, lorsqu’il est combiné à la durée, décrit le comportement du cache que le contrôle de source de données utilise.
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
Valeur de propriété
Une des DataSourceCacheExpiry valeurs. La valeur par défaut est Absolute.
Exemples
Cette section contient deux exemples de code. Le premier exemple de code montre comment un ObjectDataSource objet prend en charge le filtrage et la mise en cache. Le deuxième exemple de code montre comment implémenter une méthode wrapper qui retourne un DataSet objet pour activer la mise en cache et le filtrage avec un ObjectDataSource objet.
L’exemple de code suivant montre comment un ObjectDataSource contrôle prend en charge le filtrage et la mise en cache. Pour activer le filtrage et la mise en cache, vous devez implémenter la méthode qui récupère les données, identifiées par la SelectMethod propriété, pour renvoyer les données en tant qu’objet DataSet . Dans cet exemple, la mise en cache est activée, car l’objet EmployeeLogic retourne des données en tant que DataSet, la EnableCaching propriété est définie truesur et les CacheDurationCacheExpirationPolicy propriétés sont définies. Met ObjectDataSource en cache les données retournées par la SelectMethod propriété pendant 30 secondes.
<%@ 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>
L’exemple de code suivant montre comment implémenter une méthode wrapper qui retourne un DataSet objet pour activer la mise en cache et le filtrage avec un ObjectDataSource contrôle. Dans l’implémentation de base de la EmployeeLogic classe, la GetAllEmployees méthode retourne un ArrayList. Au lieu de refactoriser complètement l’objet pour fonctionner avec la ObjectDataSource page Web Forms, une méthode wrapper nommée GetAllEmployeesAsDataSet est ajoutée qui retourne un jeu de NorthwindEmployee données en tant que DataSet. Cet exemple de code fait partie d’un exemple plus grand fourni pour la 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
Remarques
Le ObjectDataSource contrôle prend en charge la mise en cache des données. Pendant que les données sont mises en cache, les appels à la Select méthode récupèrent des données à partir du cache plutôt qu’à partir de l’objet métier avec lequel fonctionnent les ObjectDataSource données. Lorsque le cache expire, la Select méthode récupère les données de l’objet métier, puis met à nouveau en cache les données.
Le ObjectDataSource contrôle met automatiquement en cache les données lorsque la EnableCaching propriété est définie true et que la CacheDuration propriété est définie sur une valeur supérieure à 0, ce qui indique le nombre de secondes pendant lesquelles le cache stocke les données avant l’abandon de l’entrée du cache. La valeur 0 indique une période de cache infiniment longue.
Le cache est réglementé par une combinaison de la durée et du CacheExpirationPolicy paramètre. Si la CacheExpirationPolicy propriété est définie sur la Absolute valeur, les ObjectDataSource données du premier appel à la Select méthode sont mises en cache et les conservent en mémoire pour, au maximum, la durée spécifiée par la CacheDuration propriété. Les données peuvent être libérées avant la durée, si la mémoire est nécessaire. Le cache est ensuite actualisé lors de l’appel suivant à la Select méthode. Si la CacheExpirationPolicy propriété est définie sur la Sliding valeur, le contrôle de source de données met en cache les données lors du premier appel à la Select méthode, mais réinitialise la fenêtre de temps pour laquelle elle contient le cache pour chaque appel suivant à la Select méthode. Le cache expire s’il n’existe aucune activité pendant une période égale à la CacheDuration propriété depuis le dernier appel à la Select méthode.