ObjectDataSource.CacheDuration Özellik

Tanım

Veri kaynağı denetiminin özelliği tarafından SelectMethod alınan verileri önbelleğe aldığı süreyi saniye cinsinden alır veya ayarlar.

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

Özellik Değeri

Int32

Bir özellik çağrısının ObjectDataSource sonuçlarını SelectMethod önbelleğe alan saniye sayısı. Varsayılan değer, 0'dur. Değer negatif olamaz.

Öznitelikler

Örnekler

Bu bölüm iki kod örneği içerir. İlk kod örneği, bir ObjectDataSource nesnenin önbelleğe almayı nasıl desteklediğini gösterir. İkinci kod örneği, bir nesneyle önbelleğe almayı etkinleştirmek için bir nesne döndüren sarmalayıcı DataSet ObjectDataSource yönteminin nasıl uygulandığını gösterir.

Aşağıdaki kod örneği, bir ObjectDataSource denetimin önbelleğe almayı nasıl desteklediğini gösterir. Önbelleğe almayı etkinleştirmek için, verileri nesne DataSet olarak döndürmek için özelliği tarafından SelectMethod tanımlanan verileri alan yöntemini uygulamanız gerekir. Bu örnekte, EnableCaching özelliği olarak trueayarlanır ve CacheDuration ve CacheExpirationPolicy özellikleri ayarlanır. özelliği ObjectDataSource tarafından SelectMethod döndürülen verileri 30 saniye boyunca önbelleğe alır.

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

Aşağıdaki kod örneği, bir denetimle önbelleğe almayı etkinleştirmek için bir nesne döndüren sarmalayıcı DataSet ObjectDataSource yönteminin nasıl uygulandığını gösterir. sınıfının GetAllEmployees temel uygulamasında EmployeeLogic yöntemi bir ArrayList nesnesi döndürür. nesnesini bir Web Forms sayfasında ile ObjectDataSource çalışacak şekilde tamamen yeniden düzenlemek yerine, adlı GetAllEmployeesAsDataSet bir sarmalayıcı yöntemi eklenir ve bu yöntem olarak DataSetbir veri kümesi NorthwindEmployee döndürür.

Bu kod örneği, sınıfı için ObjectDataSource sağlanan daha büyük bir örneğin parçasıdır.

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

Açıklamalar

Denetim, ObjectDataSource veri önbelleğe almayı destekler. Veriler önbelleğe alınırken yöntemine yapılan Select çağrılar, ile çalışan iş nesnesi ObjectDataSource yerine önbellekten veri alır. Önbelleğin süresi dolduğunda yöntemi, Select iş nesnesinden verileri alır ve ardından verileri yeniden önbelleğe alır.

ObjectDataSource Özellik olarak ayarlandığında ve özellik 0'dan büyük bir değere ayarlandığında true denetim verileri otomatik olarak önbelleğe EnableCaching alır ve CacheDuration bu da önbellek girdisi atilmeden önce önbelleğin verileri depoladığı saniye sayısını gösterir. 0 değeri sonsuz uzun bir önbelleği gösterir.

Önbellek, süre ve CacheExpirationPolicy ayarın bir bileşimiyle düzenlenir. CacheExpirationPolicy özelliği değerine ayarlanırsaAbsolute, ObjectDataSource yöntemine yapılan ilk çağrıdaki verileri önbelleğe Select alır ve en fazla özelliği tarafından CacheDuration belirtilen süre boyunca bellekte tutar. Bellek gerekiyorsa, veriler süre süresinden önce serbest bırakılabilir. Daha sonra yöntemine yapılan bir sonraki çağrı Select sırasında önbellek yenilenir. CacheExpirationPolicy özelliği değer olarak Sliding ayarlanırsa, veri kaynağı denetimi yöntemine yapılan ilk çağrıda verileri önbelleğe Select alır, ancak yöntemine yapılan sonraki her çağrıda Select önbelleği tuttuğu zaman penceresini sıfırlar. Yöntemine yapılan son çağrıdan bu yana özelliğe eşit CacheDuration bir süre boyunca etkinlik yoksa önbelleğin Select süresi dolar.

Şunlara uygulanır

Ayrıca bkz.