ObjectDataSource.CacheExpirationPolicy Özellik

Tanım

Süreyle birleştirildiğinde veri kaynağı denetiminin kullandığı önbelleğin davranışını açıklayan önbellek süre sonu davranışını alır veya ayarlar.

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

Özellik Değeri

Değerlerden DataSourceCacheExpiry biri. Varsayılan değer: Absolute.

Örnekler

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

Aşağıdaki kod örneği, bir ObjectDataSource denetimin filtrelemeyi ve önbelleğe almayı nasıl desteklediğini gösterir. Filtrelemeyi ve ö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öntemi uygulamanız gerekir. Bu örnekte, nesne verileri olarak döndürdüğündenEmployeeLogic, özelliği olarak ayarlandığından EnableCaching ve CacheExpirationPolicy özellikleri ayarlandığından trueCacheDuration önbelleğe alma etkinleştirilir.DataSet ö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 alma ve filtrelemeyi etkinleştirmek için bir nesne döndüren sarmalayıcı DataSetObjectDataSource yönteminin nasıl uygulandığını gösterir. sınıfının GetAllEmployees temel uygulamasında EmployeeLogic yöntemi bir ArrayListdöndürür. nesnesini bir Web Forms sayfasında çalışmak ObjectDataSource üzere tamamen yeniden düzenlemek yerine, adlı bir sarmalayıcı yöntemi eklenir ve bu yöntem GetAllEmployeesAsDataSet 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 Select yapılan çağrılar, birlikte çalıştığı iş nesnesi ObjectDataSource yerine önbellekten veri alır. Önbelleğin süresi dolduğunda yöntemi, Select iş nesnesinden verileri alır ve sonra verileri yeniden önbelleğe alır.

ObjectDataSource Özellik olarak ayarlandığında true ve CacheDuration özellik 0'dan büyük bir değere ayarlandığında denetim verileri otomatik olarak önbelleğe EnableCaching alır ve bu da önbellek girdisi atilmeden önce önbelleğin verileri depoladığı saniye sayısını gösterir. 0 değeri, sonsuz uzun bir önbellek süresini 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. Önbellek daha sonra yöntemine bir sonraki çağrı Select sırasında yenilenir. CacheExpirationPolicy özelliği değerine ayarlanırsaSliding, 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ı Select için önbelleği tuttuğu zaman penceresini sıfırlar. Yöntemine yapılan son çağrıdan bu yana özelliğine CacheDuration eşit bir süre boyunca etkinlik yoksa önbelleğin Select süresi dolar.

Şunlara uygulanır

Ayrıca bkz.