ObjectDataSource.CacheExpirationPolicy Eigenschap

Definitie

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.

Van toepassing op

Zie ook