ObjectDataSource.CacheDuration Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia czas w sekundach, przez który kontrolka źródła danych buforuje dane pobierane przez SelectMethod właściwość.
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
Wartość właściwości
Liczba sekund ObjectDataSource buforowanych wyników SelectMethod wywołania właściwości. Wartość domyślna to 0. Wartość nie może być ujemna.
- Atrybuty
Przykłady
Ten rozdział zawiera dwa przykłady kodu. Pierwszy przykład kodu pokazuje, jak ObjectDataSource obiekt obsługuje buforowanie. W drugim przykładzie kodu pokazano, jak zaimplementować metodę otoki, która zwraca DataSet obiekt w celu włączenia buforowania z obiektem ObjectDataSource .
Poniższy przykład kodu pokazuje, jak kontrolka ObjectDataSource obsługuje buforowanie. Aby włączyć buforowanie, należy zaimplementować metodę, która pobiera dane, które są identyfikowane przez SelectMethod właściwość, aby zwrócić dane jako DataSet obiekt. W tym przykładzie właściwość jest ustawiona EnableCaching na true
, a CacheDuration właściwości i CacheExpirationPolicy są ustawione. Buforuje ObjectDataSource dane zwracane przez SelectMethod właściwość przez 30 sekund.
<%@ 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>
W poniższym przykładzie kodu pokazano, jak zaimplementować metodę otoki, która zwraca DataSet obiekt w celu włączenia buforowania za pomocą kontrolki ObjectDataSource . W podstawowej implementacji EmployeeLogic
klasy GetAllEmployees
metoda zwraca ArrayList obiekt. Zamiast refaktoryzować obiekt całkowicie do pracy ze ObjectDataSource stroną formularzy sieci Web, dodawana jest metoda otoki o nazwie GetAllEmployeesAsDataSet
, która zwraca zestaw NorthwindEmployee
danych jako DataSet.
Ten przykład kodu jest częścią większego przykładu podanego ObjectDataSource dla klasy.
//
// 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
Uwagi
Kontrolka ObjectDataSource obsługuje buforowanie danych. Gdy dane są buforowane, wywołania Select metody pobierają dane z pamięci podręcznej, a nie z obiektu biznesowego, z którego ObjectDataSource działa. Gdy pamięć podręczna wygaśnie, Select metoda pobiera dane z obiektu biznesowego, a następnie ponownie buforuje dane.
Kontrolka ObjectDataSource automatycznie buforuje dane, gdy EnableCaching właściwość jest ustawiona true
na , a CacheDuration właściwość jest ustawiona na wartość większą niż 0, co wskazuje liczbę sekund przechowywania danych w pamięci podręcznej przed odrzuceniem wpisu pamięci podręcznej. Wartość 0 wskazuje nieskończonie długą pamięć podręczną.
Pamięć podręczna jest regulowana przez kombinację czasu trwania i CacheExpirationPolicy ustawienia. CacheExpirationPolicy Jeśli właściwość jest ustawiona na Absolute wartość, ObjectDataSource dane są buforowane na pierwszym wywołaniu Select metody i przechowuje je w pamięci przez co najwyżej czas określony przez CacheDuration właściwość. Dane mogą być zwalniane przed czasem trwania, jeśli wymagana jest pamięć. Pamięć podręczna jest następnie odświeżona podczas następnego wywołania Select metody . CacheExpirationPolicy Jeśli właściwość jest ustawiona na Sliding wartość, kontrolka źródła danych buforuje dane w pierwszym wywołaniu Select metody, ale resetuje przedział czasu, dla którego przechowuje pamięć podręczną na każdym kolejnym wywołaniu Select metody. Pamięć podręczna wygasa, jeśli nie ma działania przez czas równy CacheDuration właściwości od ostatniego Select wywołania metody.