Sdílet prostřednictvím


ObjectDataSource.CacheDuration Vlastnost

Definice

Získá nebo nastaví dobu v sekundách, po kterou ovládací prvek zdroje dat ukládá data, která jsou načtena SelectMethod vlastností .

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

Hodnota vlastnosti

Počet sekund, po který se ObjectDataSource výsledky SelectMethod vyvolání vlastnosti ukládají do mezipaměti. Výchozí hodnota je 0. Hodnota nemůže být záporná.

Atributy

Příklady

Tato část obsahuje dva příklady kódu. První příklad kódu ukazuje, jak ObjectDataSource objekt podporuje ukládání do mezipaměti. Druhý příklad kódu ukazuje, jak implementovat metodu obálky, která vrací DataSet objekt pro povolení ukládání do mezipaměti s objektem ObjectDataSource .

Následující příklad kódu ukazuje, jak ovládací prvek ObjectDataSource podporuje ukládání do mezipaměti. Chcete-li povolit ukládání do mezipaměti, musíte implementovat metodu, která načítá data identifikovaná SelectMethod vlastností , aby se data vrátila DataSet jako objekt. V tomto příkladu je vlastnost nastavená EnableCaching na truea CacheDuration jsou nastavené vlastnosti a CacheExpirationPolicy . Objekt ukládá ObjectDataSource data vrácená vlastností do SelectMethod mezipaměti po dobu 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>

Následující příklad kódu ukazuje, jak implementovat metodu obálky, která vrací DataSet objekt pro povolení ukládání do mezipaměti s ovládacím prvku ObjectDataSource . V základní implementaci EmployeeLogic třídy GetAllEmployees vrátí ArrayList metoda objekt . Místo kompletního refaktoringu objektu pro práci s objektem ObjectDataSource na stránce Webové formuláře je přidána metoda obálky s názvem GetAllEmployeesAsDataSet , která vrátí sadu NorthwindEmployee dat jako DataSet.

Tento příklad kódu je součástí většího příkladu ObjectDataSource pro třídu .

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

Poznámky

Ovládací ObjectDataSource prvek podporuje ukládání dat do mezipaměti. Při ukládání dat do mezipaměti volá metodu Select načítání dat z mezipaměti, nikoli z obchodního objektu ObjectDataSource , se kterým objekt pracuje. Když platnost mezipaměti vyprší, Select metoda načte data z obchodního objektu a pak je znovu ukládá do mezipaměti.

Ovládací ObjectDataSource prvek automaticky ukládá data do mezipaměti, když EnableCaching je vlastnost nastavena na true hodnotu a CacheDuration vlastnost je nastavena na hodnotu větší než 0, což označuje počet sekund, které mezipaměť ukládá data, než je položka mezipaměti zahozena. Hodnota 0 označuje nekonečně dlouhou mezipaměť.

Mezipaměť je regulovaná kombinací doby trvání a CacheExpirationPolicy nastavení. CacheExpirationPolicy Pokud je vlastnost nastavena na Absolute hodnotu , ObjectDataSource ukládá data do mezipaměti při prvním volání Select metody a uchovává je v paměti po dobu, která je určena CacheDuration vlastností. Data můžou být uvolněna před uplynutím doby trvání, pokud je potřeba paměť. Mezipaměť se pak aktualizuje během dalšího volání Select metody . CacheExpirationPolicy Pokud je vlastnost nastavena na Sliding hodnotu, ovládací prvek zdroje dat ukládá data do Select mezipaměti při prvním volání metody, ale resetuje časové okno, pro které uchovává mezipaměť při každém následném Select volání metody. Platnost mezipaměti vyprší, pokud po dobu, která se rovná CacheDuration vlastnosti od posledního volání Select metody, neexistuje žádná aktivita.

Platí pro

Viz také