ObjectDataSource.CacheDuration Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft die Zeitspanne in Sekunden ab, die das Datenquellensteuerelement die von der SelectMethod-Eigenschaft abgerufenen Daten zwischenspeichert, oder legt diese fest.
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
Eigenschaftswert
Die Anzahl von Sekunden, die die ObjectDataSource benötigt, um die Ergebnisse eines Aufrufs der SelectMethod-Eigenschaft zwischenzuspeichern. Die Standardeinstellung ist 0. Der Wert kann nicht negativ sein.
- Attribute
Beispiele
Dieser Abschnitt enthält zwei Codebeispiele. Im ersten Codebeispiel wird veranschaulicht, wie ein ObjectDataSource Objekt die Zwischenspeicherung unterstützt. Im zweiten Codebeispiel wird veranschaulicht, wie eine Wrappermethode implementiert wird, die ein Objekt zurückgibt, um die DataSet Zwischenspeicherung mit einem ObjectDataSource Objekt zu aktivieren.
Im folgenden Codebeispiel wird veranschaulicht, wie ein ObjectDataSource Steuerelement die Zwischenspeicherung unterstützt. Um zwischenspeichern zu können, müssen Sie die Methode implementieren, die Daten abruft, die von der SelectMethod Eigenschaft identifiziert werden, um die Daten als DataSet Objekt zurückzugeben. In diesem Beispiel wird die Eigenschaft auf true
", und die CacheExpirationPolicy EnableCaching CacheDuration Eigenschaften werden festgelegt. Die ObjectDataSource von der SelectMethod Eigenschaft zurückgegebenen Daten werden für 30 Sekunden zwischengespeichert.
<%@ 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>
Im folgenden Codebeispiel wird veranschaulicht, wie Sie eine Wrappermethode implementieren, die ein Objekt zurückgibt, um die DataSet Zwischenspeicherung mit einem ObjectDataSource Steuerelement zu aktivieren. In der Basisimplementierung der EmployeeLogic
Klasse gibt die GetAllEmployees
Methode ein ArrayList Objekt zurück. Anstatt das Objekt vollständig so zu bearbeiten, dass das Objekt auf ObjectDataSource einer Web Forms Seite funktioniert, wird eine Wrappermethode hinzugefügtGetAllEmployeesAsDataSet
, die einen Satz von NorthwindEmployee
Daten als eine DataSet.
Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die ObjectDataSource Klasse bereitgestellt wird.
//
// 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
Hinweise
Das Steuerelement unterstützt die ObjectDataSource Datenspeicherung. Während Daten zwischengespeichert werden, ruft die Select Methode Daten aus dem Cache und nicht aus dem Geschäftsobjekt ab, mit dem die ObjectDataSource Methode funktioniert. Wenn der Cache abläuft, ruft die Select Methode Daten aus dem Geschäftsobjekt ab, und cachet dann die Daten erneut.
Das ObjectDataSource Steuerelement speichert automatisch Daten zwischen, wenn die EnableCaching Eigenschaft auf einen Wert festgelegt true
wird, CacheDuration der größer als 0 ist, was die Anzahl der Sekunden angibt, die der Cachedaten speichert, bevor der Cacheeintrag verworfen wird. Ein Wert von 0 gibt einen unendlich langen Cache an.
Der Cache wird durch eine Kombination aus der Dauer und der CacheExpirationPolicy Einstellung geregelt. Wenn die CacheExpirationPolicy Eigenschaft auf den Absolute Wert festgelegt ist, werden die ObjectDataSource Daten des ersten Aufrufs der Select Methode zwischengespeichert und im Arbeitsspeicher gespeichert, um die von der CacheDuration Eigenschaft angegebene Zeit zu verwenden. Die Daten können vor der Dauer freigegeben werden, wenn der Speicher benötigt wird. Der Cache wird dann während des Select nächsten Aufrufs der Methode aktualisiert. Wenn die Eigenschaft auf Wert festgelegt Sliding ist, zwischenspeichert das CacheExpirationPolicy Datenquellensteuerelement Daten auf dem ersten Aufruf Select der Methode, setzt aber das Zeitfenster zurück, für das er den Cache bei jedem nachfolgenden Aufruf der Select Methode enthält. Der Cache läuft ab, wenn es keine Aktivität für eine Zeit gibt, die der CacheDuration Eigenschaft entspricht, seit dem letzten Aufruf der Select Methode.