Udostępnij za pośrednictwem


ObjectDataSource.CacheDuration Właściwość

Definicja

Pobiera lub ustawia czas w sekundach, przez który kontrolka źródła danych buforuje dane pobierane przez SelectMethod właściwość.

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

Wartość właściwości

Liczba sekund ObjectDataSource buforowanych wyników SelectMethod wywołania właściwości. Wartość domyślna to 0. Wartość nie może być ujemna.

Atrybuty

Przykłady

Ten rozdział zawiera dwa przykłady kodu. Pierwszy przykład kodu pokazuje, jak ObjectDataSource obiekt obsługuje buforowanie. W drugim przykładzie kodu pokazano, jak zaimplementować metodę otoki, która zwraca DataSet obiekt w celu włączenia buforowania z obiektem ObjectDataSource .

Poniższy przykład kodu pokazuje, jak kontrolka ObjectDataSource obsługuje buforowanie. Aby włączyć 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 właściwość jest ustawiona EnableCaching na true, a CacheDuration właściwości i CacheExpirationPolicy są ustawione. Buforuje ObjectDataSource 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 za pomocą kontrolki ObjectDataSource . W podstawowej implementacji EmployeeLogic klasy GetAllEmployees metoda zwraca ArrayList obiekt. Zamiast refaktoryzować obiekt całkowicie do pracy ze ObjectDataSource stroną 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 podanego 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, z którego ObjectDataSource działa. Gdy pamięć podręczna wygaśnie, Select metoda pobiera dane z obiektu biznesowego, a następnie ponownie buforuje dane.

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

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 na 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 wymagana jest pamięć. 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 w pierwszym wywołaniu Select metody, ale resetuje przedział czasu, dla którego przechowuje pamięć podręczną na każdym kolejnym wywołaniu Select metody. Pamięć podręczna wygasa, jeśli nie ma działania przez czas równy CacheDuration właściwości od ostatniego Select wywołania metody.

Dotyczy

Zobacz też