ObjectDataSource.CacheExpirationPolicy プロパティ

定義

存続期間と組み合わせた場合の、データ ソース コントロールが使用するキャッシュの動作を記述するキャッシュの有効期限の動作を取得または設定します。

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

プロパティ値

DataSourceCacheExpiry 値のいずれか 1 つ。 既定値は、Absolute です。

このセクションには、2 つのコード例が含まれています。 最初のコード例では、オブジェクトが ObjectDataSource フィルター処理とキャッシュをサポートする方法を示します。 2 番目のコード例では、オブジェクトを返す DataSet ラッパー メソッドを実装して、オブジェクトを使用したキャッシュとフィルター処理を有効にする方法を ObjectDataSource 示します。

次のコード例は、コントロールが ObjectDataSource フィルター処理とキャッシュをサポートする方法を示しています。 フィルター処理とキャッシュを有効にするには、 プロパティによって識別されるデータを取得する メソッドを SelectMethod 実装して、データをオブジェクトとして DataSet 返す必要があります。 この例では、 オブジェクトが としてデータEnableCachingDataSetEmployeeLogic返し、 プロパティが にtrue設定され、 プロパティと CacheExpirationPolicy プロパティが設定されているため、CacheDurationキャッシュが有効になっています。 は ObjectDataSource 、 プロパティによって返されるデータを SelectMethod 30 秒間キャッシュします。

<%@ 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>

次のコード例では、オブジェクトを返す DataSet ラッパー メソッドを実装して、コントロールを使用したキャッシュとフィルター処理を有効にする方法を ObjectDataSource 示します。 クラスの基本実装 EmployeeLogic では、 メソッドは GetAllEmployeesArrayList返します。 オブジェクトを完全にリファクタリングしてWeb Forms ページで を操作ObjectDataSourceする代わりに、 という名前GetAllEmployeesAsDataSetのラッパー メソッドが追加され、データのNorthwindEmployeeセットが としてDataSet返されます。 このコード例は、ObjectDataSource クラスのために提供されている大規模な例の一部です。

//
// 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

注釈

コントロールでは ObjectDataSource 、データ キャッシュがサポートされています。 データがキャッシュされている間、 メソッドの呼び出しは、 が使用する Select ビジネス オブジェクトからではなく、キャッシュからデータを ObjectDataSource 取得します。 キャッシュの有効期限が切れると、 メソッドは Select ビジネス オブジェクトからデータを取得し、データをもう一度キャッシュします。

コントロールはObjectDataSource、 プロパティが にtrue設定されCacheDuration、 プロパティが 0 より大きい値に設定されるとEnableCaching、データを自動的にキャッシュします。これは、キャッシュ エントリが破棄されるまでにキャッシュがデータを格納する秒数を示します。 値 0 は、無限に長いキャッシュ期間を示します。

キャッシュは、期間と設定の組み合わせによって調整されます CacheExpirationPolicy 。 プロパティが CacheExpirationPolicy 値に Absolute 設定されている場合、 ObjectDataSource メソッドの最初の呼び出しでデータが Select キャッシュされ、最大で プロパティで指定された時間だけメモリに CacheDuration 保持されます。 メモリが必要な場合は、期間の前にデータが解放される可能性があります。 その後、 メソッドの次の呼び出し中にキャッシュが Select 更新されます。 プロパティが CacheExpirationPolicy 値に Sliding 設定されている場合、データ ソースコントロールはメソッドの最初の呼び出しでデータを Select キャッシュしますが、メソッドの後続の呼び出しごとにキャッシュを保持する時間枠を Select リセットします。 メソッドの最後の呼び出し以降に プロパティと等しい CacheDuration 時間のアクティビティがない場合、キャッシュの有効期限が Select 切れます。

適用対象

こちらもご覧ください