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

DataSourceCacheExpiry 값 중 하나입니다. 기본값은 Absolute입니다.

예제

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

다음 코드 예제에서는 어떻게는 ObjectDataSource 컨트롤 필터링 및 캐싱을 지원 합니다. 필터링 및 캐시를 사용 하 여 식별 되는 데이터를 검색 하는 메서드를 구현 해야 합니다 SelectMethod 속성에 데이터를 반환 하는 DataSet 개체. 이 예제에서는 캐싱이 설정 되어 있으므로 EmployeeLogic 개체에 데이터를 반환 합니다는 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 메서드.

적용 대상

추가 정보