ObjectDataSource.CacheDuration Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar eller anger hur lång tid, i sekunder, som datakällans kontroll cachelagrar data som hämtas av SelectMethod egenskapen.
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
Egenskapsvärde
Antalet sekunder som ObjectDataSource cachelagrar resultatet av ett SelectMethod egenskapsanrop. Standardvärdet är 0. Värdet får inte vara negativt.
- Attribut
Exempel
Det här avsnittet innehåller två kodexempel. Det första kodexemplet visar hur ett ObjectDataSource objekt stöder cachelagring. Det andra kodexemplet visar hur du implementerar en omslutningsmetod som returnerar ett DataSet objekt för att aktivera cachelagring med ett ObjectDataSource objekt.
Följande kodexempel visar hur en ObjectDataSource kontroll stöder cachelagring. För att aktivera cachelagring måste du implementera metoden som hämtar data, som identifieras av SelectMethod egenskapen, för att returnera data som ett DataSet objekt. I det här exemplet är egenskapen EnableCaching inställd på true, och CacheDuration egenskaperna och CacheExpirationPolicy anges. Cachelagrar ObjectDataSource data som returneras av egenskapen i SelectMethod 30 sekunder.
<%@ 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>
Följande kodexempel visar hur du implementerar en omslutningsmetod som returnerar ett DataSet objekt för att aktivera cachelagring med en ObjectDataSource kontroll. I basimplementeringen av EmployeeLogic klassen GetAllEmployees returnerar metoden ett ArrayList objekt. I stället för att omstrukturera objektet helt för att fungera med ObjectDataSource på en webbformulärsida läggs en omslutningsmetod med namnet GetAllEmployeesAsDataSet till som returnerar en uppsättning NorthwindEmployee data som en DataSet.
Det här kodexemplet är en del av ett större exempel för ObjectDataSource klassen.
//
// 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
Kommentarer
Kontrollen ObjectDataSource stöder datacachelagring. Medan data cachelagras anrop till Select metoden hämtar data från cacheminnet i stället för från affärsobjektet ObjectDataSource som fungerar med. När cacheminnet upphör att gälla Select hämtar metoden data från affärsobjektet och cachelagrar sedan data igen.
Kontrollen ObjectDataSource cachelagrar automatiskt data när EnableCaching egenskapen är inställd på true och CacheDuration egenskapen anges till ett värde större än 0, vilket anger hur många sekunder cacheminnet lagrar data innan cacheposten tas bort. Värdet 0 anger en oändligt lång cache.
Cachen regleras av en kombination av varaktigheten CacheExpirationPolicy och inställningen. Om egenskapen CacheExpirationPolicy är inställd Absolute på värdet ObjectDataSource cachelagrar data vid det första anropet Select till metoden och innehåller den i minnet för högst den tid som anges av CacheDuration egenskapen. Data kan släppas före varaktigheten, om minnet behövs. Cachen uppdateras sedan under nästa anrop till Select metoden. Om egenskapen CacheExpirationPolicy är inställd Sliding på värde cachelagrar datakällkontrollen data vid det första anropet Select till metoden, men återställer det tidsfönster för vilket cacheminnet finns på varje efterföljande anrop till Select metoden. Cacheminnet upphör att gälla om det inte finns någon aktivitet under en tid som är lika med CacheDuration egenskapen sedan det senaste anropet Select till metoden.