ObjectDataSource.CacheDuration Propriété

Définition

Obtient ou définit la durée, en secondes, de la mise en cache des données par le contrôle de source de données avant que celles-ci soient récupérées par la propriété SelectMethod.

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 durant lesquelles ObjectDataSource met en cache le résultat de l'appel d'une propriété SelectMethod. 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 sur true, et les CacheDuration propriétés et CacheExpirationPolicy 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 qu’il fonctionne avec sur ObjectDataSource une 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 les données du cache plutôt que de l’objet métier avec lequel ObjectDataSource fonctionne. Lorsque le cache expire, la Select méthode récupère les données de l’objet métier, puis les met à nouveau en cache.

Le ObjectDataSource contrôle met automatiquement en cache les données lorsque la EnableCaching propriété est définie sur true et que la CacheDuration propriété a une valeur supérieure à 0, ce qui indique le nombre de secondes pendant lesquelles le cache stocke les données avant que l’entrée du cache ne soit ignorée. 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 sont mises en cache sur le premier appel à la Select méthode et les conservent en mémoire pendant, 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é a 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 il contient le cache à chaque appel suivant à la Select méthode. Le cache expire s’il n’y a pas d’activité pendant une durée égale à la CacheDuration propriété depuis le dernier appel à la Select méthode.

S’applique à

Voir aussi