Bagikan melalui


ObjectDataSource.CacheExpirationPolicy Properti

Definisi

Mendapatkan atau mengatur perilaku kedaluwarsa cache yang, ketika dikombinasikan dengan durasi, menjelaskan perilaku cache yang digunakan kontrol sumber data.

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

Nilai Properti

Salah DataSourceCacheExpiry satu nilai. Default adalah Absolute.

Contoh

Bagian ini berisi dua contoh kode. Contoh kode pertama menunjukkan bagaimana objek ObjectDataSource mendukung pemfilteran dan penembolokan. Contoh kode kedua menunjukkan cara mengimplementasikan metode pembungkus DataSet yang mengembalikan objek untuk mengaktifkan penembolokan dan pemfilteran dengan ObjectDataSource objek.

Contoh kode berikut menunjukkan bagaimana ObjectDataSource kontrol mendukung pemfilteran dan penembolokan. Untuk mengaktifkan pemfilteran dan penembolokan, Anda harus menerapkan metode yang mengambil data, yang diidentifikasi oleh SelectMethod properti , untuk mengembalikan data sebagai DataSet objek. Dalam contoh ini, penembolokan diaktifkan karena EmployeeLogic objek mengembalikan data sebagai DataSet, EnableCaching properti diatur ke true, dan CacheDuration properti dan CacheExpirationPolicy diatur. Cache ObjectDataSource data yang dikembalikan oleh SelectMethod properti selama 30 detik.

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

Contoh kode berikut menunjukkan cara menerapkan metode pembungkus DataSet yang mengembalikan objek untuk mengaktifkan penembolokan dan pemfilteran dengan ObjectDataSource kontrol. Dalam implementasi EmployeeLogic dasar kelas , GetAllEmployees metode mengembalikan ArrayList. Alih-alih merefaktor objek sepenuhnya untuk bekerja dengan ObjectDataSource pada halaman Formulir Web, metode pembungkus bernama GetAllEmployeesAsDataSet ditambahkan yang mengembalikan sekumpulan NorthwindEmployee data sebagai DataSet. Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk ObjectDataSource kelas .

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

Keterangan

Kontrol ObjectDataSource mendukung penembolokan data. Saat data di-cache, panggilan ke Select metode mengambil data dari cache daripada dari objek bisnis yang ObjectDataSource bekerja dengannya. Ketika cache kedaluwarsa, Select metode mengambil data dari objek bisnis, lalu cache data lagi.

Kontrol ObjectDataSource secara otomatis menyimpan data saat EnableCaching properti diatur ke true dan CacheDuration properti diatur ke nilai yang lebih besar dari 0, yang menunjukkan jumlah detik cache menyimpan data sebelum entri cache dibuang. Nilai 0 menunjukkan periode cache yang sangat panjang.

Cache diatur oleh kombinasi durasi dan CacheExpirationPolicy pengaturan. CacheExpirationPolicy Jika properti diatur ke Absolute nilai , ObjectDataSource cache data pada panggilan pertama ke Select metode dan menyimpannya dalam memori untuk, paling banyak, jumlah waktu yang ditentukan oleh CacheDuration properti . Data mungkin dirilis sebelum waktu durasi, jika memori diperlukan. Cache kemudian disegarkan selama panggilan berikutnya ke Select metode . CacheExpirationPolicy Jika properti diatur ke Sliding nilai , kontrol sumber data menyimpan data pada panggilan pertama ke Select metode , tetapi mengatur ulang jendela waktu yang menyimpan cache untuk setiap panggilan berikutnya ke Select metode . Cache kedaluwarsa jika tidak ada aktivitas untuk waktu yang sama dengan CacheDuration properti sejak panggilan terakhir ke Select metode .

Berlaku untuk

Lihat juga