ObjectDataSource.CacheDuration Eigenschaft

Definition

Ruft die Zeitspanne in Sekunden ab, die das Datenquellensteuerelement die von der SelectMethod-Eigenschaft abgerufenen Daten zwischenspeichert, 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

Int32

Die Anzahl von Sekunden, die die ObjectDataSource benötigt, um die Ergebnisse eines Aufrufs der SelectMethod-Eigenschaft zwischenzuspeichern. Die Standardeinstellung ist 0. Der Wert kann nicht negativ sein.

Attribute

Beispiele

Dieser Abschnitt enthält zwei Codebeispiele. Im ersten Codebeispiel wird veranschaulicht, wie ein ObjectDataSource Objekt die Zwischenspeicherung unterstützt. Im zweiten Codebeispiel wird veranschaulicht, wie eine Wrappermethode implementiert wird, die ein Objekt zurückgibt, um die DataSet Zwischenspeicherung mit einem ObjectDataSource Objekt zu aktivieren.

Im folgenden Codebeispiel wird veranschaulicht, wie ein ObjectDataSource Steuerelement die Zwischenspeicherung unterstützt. Um zwischenspeichern zu können, müssen Sie die Methode implementieren, die Daten abruft, die von der SelectMethod Eigenschaft identifiziert werden, um die Daten als DataSet Objekt zurückzugeben. In diesem Beispiel wird die Eigenschaft auf true", und die CacheExpirationPolicy EnableCaching CacheDuration Eigenschaften werden festgelegt. Die ObjectDataSource von der SelectMethod Eigenschaft zurückgegebenen Daten werden für 30 Sekunden 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 Sie eine Wrappermethode implementieren, die ein Objekt zurückgibt, um die DataSet Zwischenspeicherung mit einem ObjectDataSource Steuerelement zu aktivieren. In der Basisimplementierung der EmployeeLogic Klasse gibt die GetAllEmployees Methode ein ArrayList Objekt zurück. Anstatt das Objekt vollständig so zu bearbeiten, dass das Objekt auf ObjectDataSource einer Web Forms Seite funktioniert, wird eine Wrappermethode hinzugefügtGetAllEmployeesAsDataSet, die einen Satz von NorthwindEmployee Daten als eine DataSet.

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 Steuerelement unterstützt die ObjectDataSource Datenspeicherung. Während Daten zwischengespeichert werden, ruft die Select Methode Daten aus dem Cache und nicht aus dem Geschäftsobjekt ab, mit dem die ObjectDataSource Methode funktioniert. Wenn der Cache abläuft, ruft die Select Methode Daten aus dem Geschäftsobjekt ab, und cachet dann die Daten erneut.

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

Der Cache wird durch eine Kombination aus der Dauer und der CacheExpirationPolicy Einstellung geregelt. Wenn die CacheExpirationPolicy Eigenschaft auf den Absolute Wert festgelegt ist, werden die ObjectDataSource Daten des ersten Aufrufs der Select Methode zwischengespeichert und im Arbeitsspeicher gespeichert, um die von der CacheDuration Eigenschaft angegebene Zeit zu verwenden. Die Daten können vor der Dauer freigegeben werden, wenn der Speicher benötigt wird. Der Cache wird dann während des Select nächsten Aufrufs der Methode aktualisiert. Wenn die Eigenschaft auf Wert festgelegt Sliding ist, zwischenspeichert das CacheExpirationPolicy Datenquellensteuerelement Daten auf dem ersten Aufruf Select der Methode, setzt aber das Zeitfenster zurück, für das er den Cache bei jedem nachfolgenden Aufruf der Select Methode enthält. Der Cache läuft ab, wenn es keine Aktivität für eine Zeit gibt, die der CacheDuration Eigenschaft entspricht, seit dem letzten Aufruf der Select Methode.

Gilt für

Siehe auch