ObjectDataSource.CacheExpirationPolicy Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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í zdroje 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í formát 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 metodu obálky, která vrací DataSet objekt pro povolení ukládání do mezipaměti a filtrování s objektem ObjectDataSource .
Následující příklad kódu ukazuje, jak ovládací prvek ObjectDataSource podporuje filtrování a ukládání do mezipaměti. Chcete-li povolit filtrování a ukládání do mezipaměti, musíte implementovat metodu, která načítá data, která jsou identifikována SelectMethod vlastností, aby se data vrátila DataSet jako objekt. V tomto příkladu je ukládání do mezipaměti povolené, protože EmployeeLogic
objekt vrací data jako DataSet, EnableCaching vlastnost je nastavena na true
a CacheDuration vlastnosti a CacheExpirationPolicy jsou nastaveny. Data ObjectDataSource vrácená vlastností se ukládají 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 umožňující ukládání do mezipaměti a filtrování pomocí ovládacího prvku ObjectDataSource . V základní implementaci EmployeeLogic
třídy GetAllEmployees
vrátí metoda hodnotu ArrayList. Místo úplného refaktoringu objektu pro práci s objektem ObjectDataSource na stránce webových formulářů je přidána metoda obálky s názvem GetAllEmployeesAsDataSet
, která vrací 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. Zatímco jsou data uložená v mezipaměti, volání metody načítají Select data z mezipaměti, nikoli z obchodního objektu ObjectDataSource , se kterým pracuje. Po vypršení platnosti Select mezipaměti 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
a CacheDuration vlastnost je nastavena na hodnotu větší než 0, což označuje počet sekund, po které mezipaměť ukládá data, než je položka mezipaměti zahozena. Hodnota 0 označuje nekonečně dlouhou dobu mezipaměti.
Mezipaměť se reguluje kombinací doby trvání a CacheExpirationPolicy nastavení. CacheExpirationPolicy Pokud je vlastnost nastavena na Absolute hodnotu, ObjectDataSource ukládá data při prvním volání metody do Select mezipaměti a uchovává je v paměti maximálně po dobu určenou 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é období, 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á se CacheDuration rovná vlastnosti od posledního Select volání metody.