Partager via


ObjectDataSource.CacheExpirationPolicy Propriété

Définition

Obtient ou définit le comportement d'expiration du cache qui, lorsqu'il est associé à la durée, décrit le comportement du cache utilisé par le contrôle de source de données.

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 valeurs de l'objet DataSourceCacheExpiry. 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, qui est identifiée 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 sous la forme d’un DataSet, la EnableCaching propriété a la truevaleur 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 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 qu’il fonctionne avec sur ObjectDataSource une page Web Forms, une méthode wrapper nommée GetAllEmployeesAsDataSet est ajoutée qui retourne un ensemble de données sous la forme d’un NorthwindEmployeeDataSet. 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. Lorsque les données sont mises en cache, les appels à la Select méthode récupèrent des données à partir 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é 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 que l’entrée du cache ne soit ignorée. 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, le ObjectDataSource cache les données du premier appel à la méthode et les Select conserve en mémoire pendant, au maximum, la durée spécifiée par la CacheDuration propriété. Les données peuvent être publiées avant l’heure de 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 pour chaque appel suivant à la Select méthode. Le cache expire s’il n’y a aucune activité pendant une durée égale à la CacheDuration propriété depuis le dernier appel à la Select méthode.

S’applique à

Voir aussi