Freigeben über


ObjectDataSource.CacheDuration Eigenschaft

Definition

Ruft die Dauer in Sekunden ab, die das Datenquellensteuerelement Daten zwischenspeichert, die von der SelectMethod Eigenschaft abgerufen werden, oder legt diese fest.

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

Eigenschaftswert

Die Anzahl der Sekunden, die die ObjectDataSource Ergebnisse eines SelectMethod Eigenschaftsaufrufs zwischenspeichert. Der Standardwert lautet 0. Der Wert kann nicht negativ sein.

Attribute

Beispiele

Dieser Abschnitt enthält zwei Codebeispiele. Das erste Codebeispiel veranschaulicht, wie ein ObjectDataSource Objekt das Zwischenspeichern unterstützt. Im zweiten Codebeispiel wird veranschaulicht, wie eine Wrappermethode implementiert wird, die ein DataSet Objekt zurückgibt, um das Zwischenspeichern mit einem ObjectDataSource Objekt zu ermöglichen.

Im folgenden Codebeispiel wird veranschaulicht, wie ein ObjectDataSource Steuerelement das Zwischenspeichern unterstützt. Zum Aktivieren der Zwischenspeicherung müssen Sie die Methode implementieren, mit der Daten abgerufen werden, die von der SelectMethod Eigenschaft identifiziert werden, um die Daten als DataSet Objekt zurückzugeben. In diesem Beispiel wird die EnableCaching Eigenschaft auf true, und die CacheDuration eigenschaften CacheExpirationPolicy werden festgelegt. Die ObjectDataSource Daten, die von der SelectMethod Eigenschaft für 30 Sekunden zurückgegeben werden, werden zwischengespeichert.

<%@ 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>

Im folgenden Codebeispiel wird veranschaulicht, wie eine Wrappermethode implementiert wird, die ein DataSet Objekt zurückgibt, um das Zwischenspeichern mit einem ObjectDataSource Steuerelement zu ermöglichen. In der Basisimplementierung der EmployeeLogic Klasse gibt die GetAllEmployees Methode ein ArrayList Objekt zurück. Anstatt das Objekt vollständig zu umgestalten, um mit der ObjectDataSource Auf einer Web Forms-Seite zu arbeiten, wird eine Wrappermethode mit dem Namen GetAllEmployeesAsDataSet hinzugefügt, die eine Gruppe von NorthwindEmployee Daten als eine DataSetzurückgibt.

Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die ObjectDataSource Klasse bereitgestellt wird.

//
// 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

Hinweise

Das ObjectDataSource Steuerelement unterstützt das Zwischenspeichern von Daten. Während Daten zwischengespeichert werden, rufen Aufrufe der Select Methode Daten aus dem Cache und nicht aus dem Geschäftsobjekt ab, mit dem die ObjectDataSource Methode arbeitet. Wenn der Cache abläuft, ruft die Select Methode Daten aus dem Geschäftsobjekt ab und speichert die Daten dann erneut zwischen.

Das ObjectDataSource Steuerelement speichert automatisch Daten zwischen, wenn die EnableCaching Eigenschaft auf einen Wert festgelegt true ist, der CacheDuration größer als 0 ist, was die Anzahl der Sekunden angibt, in denen der Cache Daten speichert, bevor der Cacheeintrag verworfen wird. Ein Wert von 0 gibt einen unendlich langen Cache an.

Der Cache wird durch eine Kombination aus Dauer und CacheExpirationPolicy Einstellung geregelt. Wenn die Eigenschaft auf den Absolute Wert festgelegt ist, speichert die CacheExpirationPolicyObjectDataSource Daten im ersten Aufruf der Select Methode zwischen und hält sie im Arbeitsspeicher für den zeitraum, der von der CacheDuration Eigenschaft angegeben wird. Die Daten können vor der Dauer freigegeben werden, wenn der Arbeitsspeicher benötigt wird. Der Cache wird dann während des nächsten Aufrufs der Select Methode aktualisiert. Wenn die Eigenschaft auf Sliding Wert festgelegt ist, speichert das CacheExpirationPolicy Datenquellensteuerelement Daten im ersten Aufruf der Select Methode zwischen, setzt jedoch das Zeitfenster zurück, für das er den Cache für jeden nachfolgenden Aufruf der Select Methode enthält. Der Cache läuft ab, wenn seit dem letzten Aufruf der Select Methode keine Aktivität vorhanden ist, die der CacheDuration Eigenschaft entspricht.

Gilt für:

Weitere Informationen