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 das Zwischenspeichern unterstützt. Im zweiten Codebeispiel wird veranschaulicht, wie eine Wrappermethode implementiert wird, die ein DataSet -Objekt zurückgibt, um die Zwischenspeicherung mit einem ObjectDataSource -Objekt zu ermöglichen.
Im folgenden Codebeispiel wird veranschaulicht, wie ein ObjectDataSource Steuerelement das Zwischenspeichern unterstützt. Um die Zwischenspeicherung zu aktivieren, müssen Sie die Methode implementieren, die Daten abruft, die durch die SelectMethod -Eigenschaft identifiziert wird, um die Daten als DataSet -Objekt zurückzugeben. In diesem Beispiel wird die EnableCaching -Eigenschaft auf true
festgelegt, und die CacheDuration Eigenschaften und CacheExpirationPolicy werden festgelegt. Die ObjectDataSource von der SelectMethod -Eigenschaft zurückgegebenen Daten werden 30 Sekunden lang 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 eine Wrappermethode implementiert wird, die ein DataSet -Objekt zurückgibt, um das Zwischenspeichern mit einem ObjectDataSource Steuerelement zu ermöglichen. In der Basisimplementierung der EmployeeLogic
-Klasse gibt die GetAllEmployees
-Methode ein ArrayList -Objekt zurück. Anstatt das Objekt vollständig umzugestalten, um mit auf ObjectDataSource einer Web Forms-Seite zu arbeiten, wird eine Wrappermethode namens GetAllEmployeesAsDataSet
hinzugefügt, die einen Satz von NorthwindEmployee
Daten als DataSetzurückgibt.
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 ObjectDataSource -Steuerelement unterstützt die Datenzwischenspeicherung. Während daten zwischengespeichert werden, rufen Aufrufe der Select -Methode Daten aus dem Cache und nicht aus dem Geschäftsobjekt ab, mit dem der ObjectDataSource verwendet wird. Wenn der Cache abläuft, ruft die Select -Methode Daten aus dem Geschäftsobjekt ab und speichert die Daten dann erneut zwischen.
Das ObjectDataSource Steuerelement speichert Daten automatisch zwischen, wenn die EnableCaching Eigenschaft auf true
festgelegt ist und die CacheDuration Eigenschaft auf einen Wert größer als 0 festgelegt ist. Dies gibt die Anzahl der Sekunden an, die der Cache speichert, bevor der Cacheeintrag verworfen wird. Der Wert 0 gibt einen unendlich langen Cache an.
Der Cache wird durch eine Kombination aus Dauer und CacheExpirationPolicy Einstellung geregelt. Wenn die CacheExpirationPolicy -Eigenschaft auf den Absolute -Wert festgelegt ist, speichert die ObjectDataSource Daten beim ersten Aufruf der Select -Methode zwischen und speichert sie im Arbeitsspeicher, höchstens für den zeitraum, der von der CacheDuration -Eigenschaft angegeben wird. Die Daten werden möglicherweise vor der Dauer freigegeben, wenn der Arbeitsspeicher benötigt wird. Der Cache wird dann beim nächsten Aufruf der Select -Methode aktualisiert. Wenn die CacheExpirationPolicy -Eigenschaft auf Sliding wert festgelegt ist, speichert die Datenquellensteuerung die Daten beim ersten Aufruf der Select -Methode zwischen, setzt jedoch das Zeitfenster zurück, für das sie den Cache bei jedem nachfolgenden Aufruf der Select -Methode enthält. Der Cache läuft ab, wenn seit dem letzten Aufruf Select der -Methode keine Aktivität vorhanden ist, die der CacheDuration -Eigenschaft entspricht.