Bagikan melalui


ObjectDataSource.CacheDuration Properti

Definisi

Mendapatkan atau mengatur durasi waktu, dalam detik, bahwa kontrol sumber data menyimpan data yang diambil oleh SelectMethod properti .

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

Nilai Properti

Jumlah detik yang di-cache ObjectDataSource hasil pemanggilan SelectMethod properti. Defaultnya adalah 0. Nilai tidak boleh negatif.

Atribut

Contoh

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

Contoh kode berikut menunjukkan bagaimana ObjectDataSource kontrol mendukung penembolokan. Untuk mengaktifkan penembolokan, Anda harus menerapkan metode yang mengambil data, yang diidentifikasi oleh SelectMethod properti , untuk mengembalikan data sebagai DataSet objek. Dalam contoh ini, 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 mengimplementasikan metode pembungkus DataSet yang mengembalikan objek untuk mengaktifkan penembolokan dengan ObjectDataSource kontrol. Dalam implementasi EmployeeLogic dasar kelas , GetAllEmployees metode mengembalikan ArrayList objek . 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 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 pada 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