ObjectDataSource.CacheDuration Tulajdonság
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Másodpercek alatt lekéri vagy beállítja, hogy az adatforrás-vezérlő gyorsítótárazza a SelectMethod tulajdonság által lekért adatokat.
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
Tulajdonság értéke
Azon másodpercek száma, amikor a ObjectDataSource rendszer gyorsítótárazza egy SelectMethod tulajdonsághívás eredményét. Az alapértelmezett érték a 0. Az érték nem lehet negatív.
- Attribútumok
Példák
Ez a szakasz két példakódot tartalmaz. Az első példakód bemutatja, hogyan támogatja egy ObjectDataSource objektum a gyorsítótárazást. A második példakód bemutatja, hogyan implementálhat egy burkolómetódust, amely egy DataSet objektumot ad vissza az objektum gyorsítótárazásának ObjectDataSource engedélyezéséhez.
Az alábbi példakód bemutatja, hogy egy ObjectDataSource vezérlő hogyan támogatja a gyorsítótárazást. A gyorsítótárazás engedélyezéséhez implementálnia kell a tulajdonság által SelectMethod azonosított adatokat lekérő metódust, hogy objektumként DataSet adja vissza az adatokat. Ebben a példában a EnableCaching tulajdonság trueértéke az , és CacheDuration a CacheExpirationPolicy tulajdonságok lesznek beállítva. A ObjectDataSource tulajdonság által visszaadott SelectMethod adatok gyorsítótárazása 30 másodpercig.
<%@ 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>
Az alábbi példakód bemutatja, hogyan implementálhat egy burkolómetódus-metódust, amely egy DataSet objektumot ad vissza a vezérlővel való ObjectDataSource gyorsítótárazás engedélyezéséhez. Az osztály alap implementációjában EmployeeLogic a GetAllEmployees metódus egy ArrayList objektumot ad vissza. Ahelyett, hogy az objektumot teljesen újrabontással szeretné használni egy ObjectDataSource webes űrlaplapon, a rendszer hozzáad egy burkolómetódustGetAllEmployeesAsDataSet, amely egy adathalmazt NorthwindEmployeeDataSet ad vissza.
Ez a példakód egy nagyobb, az ObjectDataSource osztályhoz tartozó példa része.
//
// 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
Megjegyzések
A ObjectDataSource vezérlő támogatja az adatok gyorsítótárazását. Miközben az adatok gyorsítótárazva lesznek, a Select metódus hívásai a gyorsítótárból kérik le az adatokat, nem pedig abból az üzleti objektumból, amellyel a ObjectDataSource rendszer dolgozik. Amikor a gyorsítótár lejár, a Select metódus lekéri az adatokat az üzleti objektumból, majd újra gyorsítótárazza az adatokat.
A ObjectDataSource vezérlő automatikusan gyorsítótárazza az adatokat a EnableCaching tulajdonság beállításakor true , és a CacheDuration tulajdonság értéke 0-nál nagyobb, ami azt jelzi, hogy a gyorsítótár hány másodpercig tárolja az adatokat a gyorsítótár bejegyzésének elvetése előtt. A 0 érték végtelenül hosszú gyorsítótárat jelöl.
A gyorsítótárat az időtartam és a CacheExpirationPolicy beállítás kombinációja szabályozza. Ha a CacheExpirationPolicy tulajdonság értéke az Absolute érték, a rendszer gyorsítótárazza a ObjectDataSource metódus első hívásának Select adatait, és legfeljebb a tulajdonság által megadott ideig tárolja a CacheDuration memóriában. Előfordulhat, hogy az adatok az időtartam előtt lesznek felszabadítva, ha a memória szükséges. A gyorsítótár ezután frissül a metódus következő hívása Select során. Ha a CacheExpirationPolicy tulajdonság értékre Sliding van állítva, az adatforrás-vezérlés gyorsítótárazza a metódus első hívásának Select adatait, de alaphelyzetbe állítja azt az időkeretet, amelyre a metódus minden későbbi hívásakor Select a gyorsítótárat tárolja. A gyorsítótár akkor jár le, ha a metódus legutóbbi hívása óta nincs olyan tevékenység, amely megegyezik CacheDuration a Select tulajdonságdal.