Udostępnij za pośrednictwem


ObjectDataSource.CacheExpirationPolicy Właściwość

Definicja

Pobiera lub ustawia zachowanie wygasania pamięci podręcznej, które w połączeniu z czasem trwania opisuje zachowanie pamięci podręcznej używanej przez kontrolę źródła danych.

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

Wartość właściwości

DataSourceCacheExpiry Jedna z wartości. Wartość domyślna to Absolute.

Przykłady

Ten rozdział zawiera dwa przykłady kodu. W pierwszym przykładzie kodu pokazano, jak ObjectDataSource obiekt obsługuje filtrowanie i buforowanie. W drugim przykładzie kodu pokazano, jak zaimplementować metodę otoki, która zwraca DataSet obiekt w celu włączenia buforowania i filtrowania za ObjectDataSource pomocą obiektu.

W poniższym przykładzie kodu pokazano, jak kontrolka ObjectDataSource obsługuje filtrowanie i buforowanie. Aby włączyć filtrowanie i buforowanie, należy zaimplementować metodę, która pobiera dane, które są identyfikowane przez SelectMethod właściwość, aby zwrócić dane jako DataSet obiekt. W tym przykładzie buforowanie jest włączone, ponieważ EmployeeLogic obiekt zwraca dane jako DataSet, EnableCaching właściwość jest ustawiona na true, a CacheDuration właściwości i CacheExpirationPolicy są ustawione. Obiekt ObjectDataSource buforuje dane zwracane przez SelectMethod właściwość przez 30 sekund.

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

W poniższym przykładzie kodu pokazano, jak zaimplementować metodę otoki, która zwraca DataSet obiekt w celu włączenia buforowania i filtrowania za pomocą kontrolki ObjectDataSource . W podstawowej implementacji EmployeeLogic klasy GetAllEmployees metoda zwraca wartość ArrayList. Zamiast refaktoryzacji obiektu w całości do pracy z ObjectDataSource obiektem na stronie formularzy sieci Web, dodawana jest metoda otoki o nazwie GetAllEmployeesAsDataSet , która zwraca zestaw NorthwindEmployee danych jako DataSet. Ten przykład kodu jest częścią większego przykładu udostępnionego ObjectDataSource dla klasy .

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

Uwagi

Kontrolka ObjectDataSource obsługuje buforowanie danych. Gdy dane są buforowane, wywołania Select metody pobierają dane z pamięci podręcznej, a nie z obiektu biznesowego ObjectDataSource , z którego współpracuje. Gdy pamięć podręczna Select wygaśnie, metoda pobiera dane z obiektu biznesowego, a następnie ponownie buforuje dane.

Kontrolka ObjectDataSource automatycznie buforuje dane, gdy EnableCaching właściwość jest ustawiona na true , a CacheDuration właściwość jest ustawiona na wartość większą niż 0, co wskazuje liczbę sekund przechowywania danych przez pamięć podręczną przed odrzuceniem wpisu pamięci podręcznej. Wartość 0 oznacza nieskończenie długi okres pamięci podręcznej.

Pamięć podręczna jest regulowana przez kombinację czasu trwania i CacheExpirationPolicy ustawienia. CacheExpirationPolicy Jeśli właściwość jest ustawiona na Absolute wartość, ObjectDataSource dane są buforowane przy pierwszym wywołaniu Select metody i przechowuje je w pamięci przez co najwyżej czas określony przez CacheDuration właściwość . Dane mogą być zwalniane przed czasem trwania, jeśli pamięć jest potrzebna. Pamięć podręczna jest następnie odświeżona podczas następnego wywołania Select metody . CacheExpirationPolicy Jeśli właściwość jest ustawiona na Sliding wartość, kontrolka źródła danych buforuje dane przy pierwszym wywołaniu Select metody, ale resetuje przedział czasu, dla którego przechowuje pamięć podręczną dla każdego kolejnego wywołania Select metody. Pamięć podręczna wygasa, jeśli nie ma aktywności przez czas równy CacheDuration właściwości od ostatniego wywołania Select metody.

Dotyczy

Zobacz też