ObjectDataSource.CacheExpirationPolicy Свойство

Определение

Возвращает или задает поведение при истечении срока действия кэша, которая в сочетании со сроком кэширования описывает принципы работы кэша, используемого элементом управления источником данных.

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

Значение свойства

DataSourceCacheExpiry

Одно из значений перечисления DataSourceCacheExpiry. Значение по умолчанию — Absolute.

Примеры

Этот раздел содержит два примера кода. В первом примере кода показано, как ObjectDataSource объект поддерживает фильтрацию и кэширование. Во втором примере кода показано, как реализовать метод-оболочку, который возвращает DataSet объект для включения кэширования и фильтрации с ObjectDataSource помощью объекта.

В следующем примере кода показано, как ObjectDataSource элемент управления поддерживает фильтрацию и кэширование. Чтобы включить фильтрацию и кэширование, необходимо реализовать метод, который извлекает данные, которые идентифицируются свойством SelectMethod DataSet , чтобы вернуть данные в виде объекта. В этом примере кэширование включено, так как EmployeeLogic объект возвращает данные в качестве DataSetзначения, EnableCaching свойство имеет значение true, а CacheDuration CacheExpirationPolicy также задаются свойства. Кэширует ObjectDataSource данные, возвращаемые свойством SelectMethod в течение 30 секунд.

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

В следующем примере кода показано, как реализовать метод-оболочку, возвращающий DataSet объект для включения кэширования и фильтрации с помощью ObjectDataSource элемента управления. В базовой EmployeeLogic реализации класса GetAllEmployees метод возвращает значение ArrayList. Вместо полного рефакторинга объекта для работы со ObjectDataSource страницей веб-формы добавляется метод-оболочкаGetAllEmployeesAsDataSet, возвращающий набор NorthwindEmployee данных в виде DataSet. Этот пример кода является частью более крупного примера, предоставленного ObjectDataSource для класса.

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

Комментарии

Элемент управления поддерживает кэширование ObjectDataSource данных. Хотя данные кэшируются, вызовы Select метода извлекают данные из кэша, а не из бизнес-объекта, с которым работает этот ObjectDataSource метод. По истечении срока действия кэша Select метод извлекает данные из бизнес-объекта, а затем снова кэширует данные.

Элемент ObjectDataSource управления автоматически кэширует данные, если EnableCaching свойство задано true , а CacheDuration свойство имеет значение больше 0, которое указывает количество секунд, в течение которых кэш сохраняет данные до удаления записи кэша. Значение 0 указывает на бесконечно длинный период кэша.

Кэш регулируется сочетанием длительности и CacheExpirationPolicy параметра. Если свойству Absolute присвоено значение, ObjectDataSource данные кэшируются при первом вызове Select метода и хранятся в памяти в течение, по крайней мере, времени, заданного свойствомCacheDuration.CacheExpirationPolicy Данные могут быть освобождены до длительности, если требуется память. Затем кэш обновляется во время следующего Select вызова метода. CacheExpirationPolicy Если свойству Sliding присвоено значение, элемент управления источником данных кэширует данные при первом вызове Select метода, но сбрасывает период времени, для которого он содержит кэш для каждого последующего Select вызова метода. Срок действия кэша истекает, если действие не выполняется в течение определенного времени, равного CacheDuration свойству с момента последнего вызова Select метода.

Применяется к

См. также раздел