ObjectDataSource.CacheDuration プロパティとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > ObjectDataSource.CacheDuration プロパティの意味・解説 

ObjectDataSource.CacheDuration プロパティ

メモ : このプロパティは、.NET Framework version 2.0 で新しく追加されたものです。

SelectMethod メソッドによって取得したデータを、データ ソース コントロールがキャッシュする時間 (秒単位) を取得または設定します。

名前空間: System.Web.UI.WebControls
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public Overridable Property
 CacheDuration As Integer
Dim instance As ObjectDataSource
Dim value As Integer

value = instance.CacheDuration

instance.CacheDuration = value
public virtual int CacheDuration { get;
 set; }
public:
virtual property int CacheDuration {
    int get ();
    void set (int value);
}
/** @property */
public int get_CacheDuration ()

/** @property */
public void set_CacheDuration (int
 value)
public function get CacheDuration
 () : int

public function set CacheDuration
 (value : int)

プロパティ値
ObjectDataSource が SelectMethod プロパティの呼び出しの結果をキャッシュする秒数。既定値は 0 です。この値には、負の値を指定することはできません。

解説解説

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

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

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

使用例使用例

このセクションには、2 つのコード例が含まれています。1 つ目のコード例では、ObjectDataSource オブジェクトでキャッシュをサポートする方法を示します。2 つ目のコード例では、DataSet オブジェクトを返すラッパー メソッドを実装し、ObjectDataSource オブジェクトでキャッシュを有効にする方法を示します。

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

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB"
 Assembly="Samples.AspNet.VB"
 %>
<%@ Page language="vb" %>
<html>
  <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>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS"
 Assembly="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<html>
  <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.jsl"
 Assembly="Samples.AspNet.jsl" %>
<%@ Page Language="VJ#" %>
<html>
  <head>
    <title>ObjectDataSource - VJ# 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.jsl.EmployeeLogic"
          selectmethod="GetAllEmployeesAsDataSet"
          enablecaching="True"
          cacheduration="30"
          cacheexpirationpolicy="Absolute" />

    </form>
  </body>
</html>

DataSet オブジェクトを返すラッパー メソッドを実装し、ObjectDataSource コントロールでキャッシュを有効にする方法を次のコード例に示します。EmployeeLogic クラスの基本実装では、GetAllEmployees メソッドは ArrayList オブジェクトを返します。Web フォーム ページの ObjectDataSource を使用するためにオブジェクトを完全にリファクタリングする代わりに、一連の NorthwindEmployee データを DataSet として返す GetAllEmployeesAsDataSet という名前のラッパー メソッドが追加されています。

このコード例は、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 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
//
// 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 static DataSet GetAllEmployeesAsDataSet()
 throws NorthwindDataException
{
    ICollection employees = GetAllEmployees();

    DataSet ds = new DataSet("Table");
    // Create the schema of the DataTable.
    DataTable dt = new DataTable();
    DataColumn dc;
    dc = new DataColumn("FirstName", String.class.ToType());
    dt.get_Columns().Add(dc);
    dc = new DataColumn("LastName", String.class.ToType());
    dt.get_Columns().Add(dc);
    dc = new DataColumn("Title", String.class.ToType());
    dt.get_Columns().Add(dc);
    dc = new DataColumn("Courtesy", String.class.ToType());
    dt.get_Columns().Add(dc);
    dc = new DataColumn("Supervisor", Int32.class.ToType());
    dt.get_Columns().Add(dc);
    // Add rows to the DataTable.
    IEnumerator emplEnum = employees.GetEnumerator();
    DataRow row;
    NorthwindEmployee ne;
    while (emplEnum.MoveNext()) {
        ne = (NorthwindEmployee)emplEnum.get_Current();
        row = dt.NewRow();
        row.set_Item("FirstName", ne.get_FirstName());
        row.set_Item("LastName", ne.get_LastName());
        row.set_Item("Title", ne.get_Title());
        row.set_Item("Courtesy", ne.get_Courtesy());
        row.set_Item("Supervisor", (Int32)ne.get_Supervisor());
        dt.get_Rows().Add(row);
    }
    // Add the complete DataTable to the DataSet.
    ds.get_Tables().Add(dt);

    return ds;
} //GetAllEmployeesAsDataSet

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ObjectDataSource クラス
ObjectDataSource メンバ
System.Web.UI.WebControls 名前空間
CacheExpirationPolicy
EnableCaching



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「ObjectDataSource.CacheDuration プロパティ」の関連用語

ObjectDataSource.CacheDuration プロパティのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ObjectDataSource.CacheDuration プロパティのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS