ObjectDataSource.CacheDuration 속성

정의

SelectMethod 속성으로 검색된 데이터를 데이터 소스 컨트롤에서 캐시하는 시간(초)을 가져오거나 설정합니다.

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

속성 값

Int32

ObjectDataSource에서 SelectMethod 속성 호출의 결과를 캐시하는 시간(초)입니다. 기본값은 0입니다. 값은 음수일 수 없습니다.

특성

예제

이 섹션에는 두 코드 예제가 있습니다. 첫 번째 코드 예제에서는 어떻게는 ObjectDataSource 개체에서 캐싱을 지원 합니다. 두 번째 코드 예제에는 반환 하는 래퍼 메서드를 구현 하는 방법을 보여 줍니다.는 DataSet 캐싱을 사용 하도록 설정 하는 개체는 ObjectDataSource 개체입니다.

다음 코드 예제에서는 어떻게는 ObjectDataSource 컨트롤이 캐싱을 지원 합니다. 캐싱을 사용 하도록 설정, 식별 된 데이터를 검색 하는 메서드를 구현 해야 합니다는 SelectMethod 속성으로 데이터를 반환 하는 DataSet 개체. 이 예제에서는 합니다 EnableCaching 속성이 true, 및 CacheDurationCacheExpirationPolicy 속성이 설정 됩니다. 합니다 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 클래스를 GetAllEmployees 메서드가 반환 되는 ArrayList 개체. 완전히 사용 하려면 개체를 리팩터링 하는 대신를 ObjectDataSource 래퍼 메서드 라는 Web Forms 페이지에서 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 컨트롤은 자동으로 데이터를 캐시 때 합니다 EnableCaching 속성이 trueCacheDuration 속성 캐시에 캐시 엔트리 이전의 데이터가 저장 되는 시간 (초) 수를 나타내는 0 보다 큰 값으로 설정 됩니다 삭제 됩니다. 값이 0 무한정 캐시를 나타냅니다.

캐시 기간을 결합 하 여 규제 되 고 CacheExpirationPolicy 설정 합니다. 경우는 CacheExpirationPolicy 속성이 Absolute 값을 ObjectDataSource 첫 번째 호출에서 데이터를 캐시는 Select 메서드 최대 시간으로 지정 된 기간 동안 메모리에 보관 하 고는 CacheDuration 속성. 메모리가 필요한 경우 데이터를 기간, 이전 해제 될 수 있습니다. 다음 호출 하는 동안 캐시는 다음을 Select 메서드. 경우는 CacheExpirationPolicy 속성이 Sliding 값을 데이터 소스 컨트롤의 첫 번째 호출에서 데이터를 캐시 합니다를 Select 메서드를 하지만 이후 각 호출의 캐시를 보관 하는 기간을 다시 설정는 Select 메서드. 해당 시간 동안 활동이 없는 경우 캐시가 만료 되는 CacheDuration 속성에 대 한 마지막 호출 이후를 Select 메서드.

적용 대상

추가 정보