Sdílet prostřednictvím


ObjectDataSource.CacheExpirationPolicy Vlastnost

Definice

Získá nebo nastaví chování vypršení platnosti mezipaměti, které v kombinaci s dobou trvání popisuje chování mezipaměti, kterou používá řízení zdrojů dat.

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

Hodnota vlastnosti

Jedna z DataSourceCacheExpiry hodnot. Výchozí hodnota je Absolute.

Příklady

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

Následující příklad kódu ukazuje, jak ObjectDataSource ovládací prvek podporuje filtrování a ukládání do mezipaměti. Chcete-li povolit filtrování a ukládání do mezipaměti, je nutné implementovat metodu, která načítá data, která jsou identifikována SelectMethod vlastností, aby vrátila data jako DataSet objekt. V tomto příkladu je ukládání do mezipaměti povoleno, protože EmployeeLogic objekt vrací data jako DataSet, EnableCaching vlastnost je nastavena na truea CacheDuration vlastnosti CacheExpirationPolicy jsou nastaveny. Data ObjectDataSource vrácená SelectMethod vlastností ukládá do 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 obálkovou metodu, která vrací DataSet objekt pro povolení ukládání do mezipaměti a filtrování pomocí ObjectDataSource ovládacího prvku. V základní implementaci EmployeeLogic třídy GetAllEmployees vrátí metoda .ArrayList Místo kompletního refaktoringu objektu pro práci se ObjectDataSource stránkou webových formulářů se přidá 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 uvedeného pro třídu 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

Poznámky

Ovládací ObjectDataSource prvek podporuje ukládání dat do mezipaměti. Zatímco jsou data uložená v mezipaměti, volání Select metody načítají data z mezipaměti místo z obchodního objektu, se ObjectDataSource kterým pracuje. Po vypršení Select platnosti mezipaměti metoda načte data z obchodního objektu a pak data znovu ukládá do mezipaměti.

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

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á ji v paměti maximálně dobu, která je určena CacheDuration vlastností. Data mohou být vydána před dobou 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 mezipaměti při prvním volání Select metody, ale resetuje časové okno, pro které uchovává mezipaměť pro každé následné volání Select metody. Platnost mezipaměti vyprší, pokud neexistuje žádná aktivita po dobu, která je rovna CacheDuration vlastnosti od posledního volání Select metody.

Platí pro

Viz také