ObjectDataSource.CacheExpirationPolicy Eigenschaft

Definition

Ruft das Cacheablaufverhalten ab, das in Kombination mit der Dauer das Verhalten des vom Datenquellen-Steuerelement verwendeten Caches beschreibt.

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

Eigenschaftswert

Einer der DataSourceCacheExpiry-Werte. Der Standardwert ist Absolute.

Beispiele

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

Im folgenden Codebeispiel wird veranschaulicht, wie ein ObjectDataSource Steuerelement Filterung und Zwischenspeicherung unterstützt. Um das Filtern und Zwischenspeichern zu aktivieren, müssen Sie die Methode implementieren, die Daten abruft, die durch die SelectMethod -Eigenschaft identifiziert wird, um die Daten als DataSet -Objekt zurückzugeben. In diesem Beispiel ist die Zwischenspeicherung aktiviert, da das EmployeeLogic Objekt Daten als DataSetzurückgibt, die EnableCaching -Eigenschaft auf truefestgelegt ist und die CacheDuration Eigenschaften und CacheExpirationPolicy festgelegt sind. Die ObjectDataSource von der SelectMethod -Eigenschaft zurückgegebenen Daten werden 30 Sekunden lang 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 und Filtern mit einem ObjectDataSource Steuerelement zu ermöglichen. In der Basisimplementierung der EmployeeLogic -Klasse gibt die GetAllEmployees -Methode einen ArrayListzurück. Anstatt das Objekt vollständig umzugestalten, um mit auf ObjectDataSource einer Web Forms-Seite zu arbeiten, wird eine Wrappermethode namens GetAllEmployeesAsDataSet hinzugefügt, die einen Satz von NorthwindEmployee Daten als 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 die Datenzwischenspeicherung. Während Daten zwischengespeichert werden, rufen Aufrufe der Select -Methode Daten aus dem Cache und nicht aus dem Geschäftsobjekt ab, mit dem der ObjectDataSource verwendet wird. 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 Daten automatisch zwischen, wenn die EnableCaching Eigenschaft auf true festgelegt ist und die CacheDuration Eigenschaft auf einen Wert größer als 0 festgelegt ist. Dies gibt die Anzahl der Sekunden an, die der Cache speichert, bevor der Cacheeintrag verworfen wird. Der Wert 0 gibt einen unendlich langen Cachezeitraum an.

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

Gilt für:

Weitere Informationen