ObjectDataSource.CacheExpirationPolicy Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt het verloopgedrag van de cache opgehaald of ingesteld dat, in combinatie met de duur, het gedrag beschrijft van de cache die door het gegevensbronbeheer wordt gebruikt.
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
Waarde van eigenschap
Een van de DataSourceCacheExpiry waarden. De standaardwaarde is Absolute.
Voorbeelden
Deze sectie bevat twee codevoorbeelden. In het eerste codevoorbeeld ziet u hoe een ObjectDataSource object ondersteuning biedt voor filteren en opslaan in cache. In het tweede codevoorbeeld ziet u hoe u een wrappermethode implementeert die een DataSet object retourneert om caching en filteren met een ObjectDataSource object mogelijk te maken.
In het volgende codevoorbeeld ziet u hoe een ObjectDataSource besturingselement ondersteuning biedt voor filteren en opslaan in cache. Als u filteren en opslaan in cache wilt inschakelen, moet u de methode implementeren waarmee gegevens worden opgehaald, die door de SelectMethod eigenschap wordt geïdentificeerd, om de gegevens als een DataSet object te retourneren. In dit voorbeeld is caching ingeschakeld omdat het EmployeeLogic object gegevens retourneert als een DataSet, de EnableCaching eigenschap is ingesteld op trueen de CacheDuration eigenschappen CacheExpirationPolicy zijn ingesteld. De ObjectDataSource gegevens die gedurende 30 seconden door de eigenschap worden geretourneerd, worden in de SelectMethod cache opgeslagen.
<%@ 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>
In het volgende codevoorbeeld ziet u hoe u een wrappermethode implementeert die een DataSet object retourneert om caching en filteren met een ObjectDataSource besturingselement mogelijk te maken. In de basisuitvoering van de EmployeeLogic klasse retourneert de GetAllEmployees methode een ArrayList. In plaats van het object volledig te herstructureren om te werken met de ObjectDataSource webpagina webformulieren, wordt er een wrappermethode met de naam GetAllEmployeesAsDataSet toegevoegd waarmee een set NorthwindEmployee gegevens wordt geretourneerd als een DataSet. Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de ObjectDataSource klasse.
//
// 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
Opmerkingen
Het ObjectDataSource besturingselement ondersteunt het opslaan van gegevens in cache. Terwijl gegevens in de cache worden opgeslagen, worden aanroepen naar de Select methode gegevens opgehaald uit de cache in plaats van uit het bedrijfsobject waarmee de ObjectDataSource gegevens werken. Wanneer de cache verloopt, haalt de Select methode gegevens op uit het bedrijfsobject en slaat de gegevens vervolgens opnieuw in de cache op.
Het ObjectDataSource besturingselement slaat automatisch gegevens in de cache op wanneer de EnableCaching eigenschap is ingesteld true op en de CacheDuration eigenschap is ingesteld op een waarde die groter is dan 0, wat het aantal seconden aangeeft dat de cache gegevens opslaat voordat de cachevermelding wordt verwijderd. Een waarde van 0 geeft een oneindig lange cacheperiode aan.
De cache wordt gereguleerd door een combinatie van de duur en de CacheExpirationPolicy instelling. Als de CacheExpirationPolicy eigenschap is ingesteld op de Absolute waarde, worden de gegevens in de cache opgeslagen in de ObjectDataSource eerste aanroep van de Select methode en wordt deze in het geheugen opgeslagen voor de hoeveelheid tijd die is opgegeven door de CacheDuration eigenschap. De gegevens kunnen vóór de duur worden vrijgegeven als het geheugen nodig is. De cache wordt vervolgens vernieuwd tijdens de volgende aanroep naar de Select methode. Als de CacheExpirationPolicy eigenschap is ingesteld op de Sliding waarde, slaat het besturingselement voor gegevensbron gegevens op in de eerste aanroep naar de Select methode, maar wordt het tijdvenster opnieuw ingesteld waarvoor de cache wordt opgeslagen voor elke volgende aanroep naar de Select methode. De cache verloopt als er geen activiteit is voor een tijd die gelijk is aan de CacheDuration eigenschap sinds de laatste aanroep van de Select methode.