ObjectDataSource.CacheExpirationPolicy 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 zachowanie wygasania pamięci podręcznej, które w połączeniu z czasem trwania opisuje zachowanie pamięci podręcznej używanej przez kontrolę źródła danych.
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
Wartość właściwości
DataSourceCacheExpiry Jedna z wartości. Wartość domyślna to Absolute.
Przykłady
Ten rozdział zawiera dwa przykłady kodu. W pierwszym przykładzie kodu pokazano, jak ObjectDataSource obiekt obsługuje filtrowanie i buforowanie. W drugim przykładzie kodu pokazano, jak zaimplementować metodę otoki, która zwraca DataSet obiekt w celu włączenia buforowania i filtrowania za ObjectDataSource pomocą obiektu.
W poniższym przykładzie kodu pokazano, jak kontrolka ObjectDataSource obsługuje filtrowanie i buforowanie. Aby włączyć filtrowanie i 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 buforowanie jest włączone, ponieważ EmployeeLogic
obiekt zwraca dane jako DataSet, EnableCaching właściwość jest ustawiona na true
, a CacheDuration właściwości i CacheExpirationPolicy są ustawione. Obiekt ObjectDataSource buforuje 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 i filtrowania za pomocą kontrolki ObjectDataSource . W podstawowej implementacji EmployeeLogic
klasy GetAllEmployees
metoda zwraca wartość ArrayList. Zamiast refaktoryzacji obiektu w całości do pracy z ObjectDataSource obiektem na stronie 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 udostępnionego 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 ObjectDataSource , z którego współpracuje. Gdy pamięć podręczna Select wygaśnie, metoda pobiera dane z obiektu biznesowego, a następnie ponownie buforuje dane.
Kontrolka ObjectDataSource automatycznie buforuje dane, gdy EnableCaching właściwość jest ustawiona na true
, a CacheDuration właściwość jest ustawiona na wartość większą niż 0, co wskazuje liczbę sekund przechowywania danych przez pamięć podręczną przed odrzuceniem wpisu pamięci podręcznej. Wartość 0 oznacza nieskończenie długi okres pamięci podręcznej.
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 przy 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 pamięć jest potrzebna. 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 przy pierwszym wywołaniu Select metody, ale resetuje przedział czasu, dla którego przechowuje pamięć podręczną dla każdego kolejnego wywołania Select metody. Pamięć podręczna wygasa, jeśli nie ma aktywności przez czas równy CacheDuration właściwości od ostatniego wywołania Select metody.