ObjectDataSource.CacheDuration 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 la durée, en secondes, que le contrôle de source de données met en cache les données récupérées par la SelectMethod propriété.
public:
virtual property int CacheDuration { int get(); void set(int value); };
[System.ComponentModel.TypeConverter(typeof(System.Web.UI.DataSourceCacheDurationConverter))]
public virtual int CacheDuration { get; set; }
[<System.ComponentModel.TypeConverter(typeof(System.Web.UI.DataSourceCacheDurationConverter))>]
member this.CacheDuration : int with get, set
Public Overridable Property CacheDuration As Integer
Valeur de propriété
Nombre de secondes pendant lesquelles le ObjectDataSource cache les résultats d’un SelectMethod appel de propriété. La valeur par défaut est 0. La valeur ne peut pas être négative.
- Attributs
Exemples
Cette section contient deux exemples de code. Le premier exemple de code montre comment un ObjectDataSource objet prend en charge 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 avec un ObjectDataSource objet.
L’exemple de code suivant montre comment un ObjectDataSource contrôle prend en charge la mise en cache. Pour activer 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 EnableCaching propriété est définie truesur , et CacheExpirationPolicy les CacheDuration 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 avec un ObjectDataSource contrôle. Dans l’implémentation de base de la EmployeeLogic classe, la GetAllEmployees méthode retourne un ArrayList objet. 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 un cache infiniment long.
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 Sliding la 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 sur 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.