이 설명서는 보관되지만 유지 되지 않습니다.

ObjectDataSource.EnableCaching 속성

업데이트: 2007년 11월

ObjectDataSource 컨트롤에서 데이터 캐싱이 활성화되어 있는지 여부를 나타내는 값을 가져오거나 설정합니다.

네임스페이스:  System.Web.UI.WebControls
어셈블리:  System.Web(System.Web.dll)

public virtual bool EnableCaching { get; set; }
/** @property */
public boolean get_EnableCaching()
/** @property */
public  void set_EnableCaching(boolean value)

public function get EnableCaching () : boolean
public function set EnableCaching (value : boolean)
<asp:ObjectDataSource EnableCaching="True|False" />

속성 값

형식: System.Boolean

데이터 소스 컨트롤에서 데이터 캐싱을 사용할 수 있으면 true이고, 그렇지 않으면 false입니다. 기본값은 false입니다.

예외상황
NotSupportedException

SelectMethod 속성으로 지정된 메서드가 DbDataReader를 반환할 때 EnableCaching 속성이 true로 설정되어 있는 경우

ObjectDataSource 컨트롤은 데이터 캐싱을 지원합니다. 데이터가 캐시되어 있는 동안 Select 메서드를 호출하면 비즈니스 개체의 인스턴스를 만들고 해당 데이터 메서드를 호출하는 ObjectDataSource가 아닌 캐시에서 데이터가 검색됩니다. 캐시가 만료되면 Select 메서드는 비즈니스 개체에서 데이터를 검색한 후 해당 데이터를 다시 캐시합니다.

ObjectDataSource 컨트롤은 EnableCaching 속성이 true로 설정되고, 캐시 엔트리가 삭제되기 전까지 캐시에 데이터가 저장되는 시간(초)을 나타내는 CacheDuration 속성이 0보다 큰 값으로 설정된 경우 자동으로 데이터를 캐시합니다. 0 값은 무한정 데이터를 캐시함을 나타냅니다.

다음 세 가지 예제에서는 Northwind 데이터베이스의 Employees 테이블에서 레코드를 검색하는 웹 페이지, 코드 숨김 페이지 클래스 및 데이터 액세스 클래스를 보여 줍니다.

첫 번째 예제에서는 ObjectDataSource 컨트롤 두 개, DropDownList 컨트롤 및 DetailsView 컨트롤이 포함된 웹 페이지를 보여 줍니다. 첫 번째 ObjectDataSource 컨트롤 및 DropDownList 컨트롤은 데이터베이스에서 직원 이름을 검색하여 표시하는 데 사용됩니다. 두 번째 ObjectDataSource 컨트롤 및 DetailsView 컨트롤은 사용자가 선택한 직원 레코드를 검색하고 표시하는 데 사용됩니다.

ObjectDataSource 컨트롤에는 캐싱이 설정됩니다. 따라서 각 레코드는 데이터베이스에서 한 번만 검색됩니다. CacheKeyDependency 속성은 "EmployeeDetails"로 설정되지만 임의의 문자열 값을 키로 사용할 수 있습니다. 웹 페이지에는 캐시된 데이터가 만료되도록 사용자가 클릭할 수 있는 Button 컨트롤도 포함됩니다.

<form id="form1" runat="server">
<div>
<asp:objectdatasource
      ID="ObjectDataSource1"
      runat="server"
      SelectMethod="GetFullNamesAndIDs"
      TypeName="Samples.AspNet.CS.EmployeeLogic" />

    <p>
    <asp:dropdownlist
      ID="DropDownList1"
      runat="server" 
      DataSourceID="ObjectDataSource1"
      DataTextField="FullName"
      DataValueField="EmployeeID" 
      AutoPostBack="True" 
      AppendDataBoundItems="true">
        <asp:ListItem Text="Select One" Value=""></asp:ListItem>
    </asp:dropdownlist>
    </p>

 <asp:objectdatasource
      ID="ObjectDataSource2"
      runat="server"
      SelectMethod="GetEmployee"
      TypeName="Samples.AspNet.CS.EmployeeLogic" 
      EnableCaching="true"
      CacheKeyDependency="EmployeeDetails" >
      <SelectParameters>
        <asp:ControlParameter ControlID="DropDownList1" DefaultValue="-1" Name="empID" />
      </SelectParameters>
    </asp:objectdatasource>

    <asp:DetailsView
        ID="DetailsView1"
        runat="server"
        DataSourceID="ObjectDataSource2" 
        AutoGenerateRows="false">  
        <Fields>
            <asp:BoundField HeaderText="Address" DataField="Address" />
            <asp:BoundField HeaderText="City" DataField="City" />
            <asp:BoundField HeaderText="Postal Code" DataField="PostalCode" />
        </Fields>  
    </asp:DetailsView>

    <asp:Button 
    ID="Button1" 
    runat="server" 
    Text="Check for latest data" 
    OnClick="Button1_Click" />

</div>
</form>


두 번째 예제에서는 Button 컨트롤의 Click 이벤트 처리기와 Load 처리기를 보여 줍니다. Load 이벤트 처리기는 키 값이 CacheKeyDependency로 설정된 캐시 항목을 만듭니다. Click 이벤트 처리기는 키 값이 CacheKeyDependency인 캐시 항목을 제거합니다. 캐시 항목이 제거되면 키에 종속된 모든 캐시된 데이터가 만료됩니다.

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Cache[ObjectDataSource2.CacheKeyDependency] = "CacheExample";
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    Cache.Remove(ObjectDataSource2.CacheKeyDependency);
    Cache[ObjectDataSource2.CacheKeyDependency] = "CacheExample";
    DetailsView1.DataBind();
}


세 번째 예제에서는 Northwind 데이터베이스와 상호 작용하는 데이터 액세스 클래스를 보여 줍니다. 이 클래스는 LINQ를 사용하여 Employees 테이블을 쿼리합니다. 이 예제에는 Northwind 데이터베이스와 Employees 테이블을 나타내는 LINQ to SQL 클래스가 필요합니다. 자세한 내용은 방법: 웹 응용 프로그램에서 LINQ to SQL 클래스 만들기를 참조하십시오.

public class EmployeeLogic
{
    public static Array GetFullNamesAndIDs()
    {
        NorthwindDataContext ndc = new NorthwindDataContext();

        var employeeQuery =
            from e in ndc.Employees
            orderby e.LastName
            select new { FullName = e.FirstName + " " + e.LastName, EmployeeID = e.EmployeeID };

        return employeeQuery.ToArray();
    }

    public static Employee GetEmployee(int empID)
    {
        if (empID < 0)
        {
            return null;
        }
        else
        {
            NorthwindDataContext ndc = new NorthwindDataContext();
            var employeeQuery =
                from e in ndc.Employees
                where e.EmployeeID == empID
                select e;

            return employeeQuery.Single();
        }
    }

    public static void UpdateEmployeeAddress(Employee originalEmployee, string address, string city, string postalcode)
    {
        NorthwindDataContext ndc = new NorthwindDataContext();
        ndc.Employees.Attach(originalEmployee, false);
        originalEmployee.Address = address;
        originalEmployee.City = city;
        originalEmployee.PostalCode = postalcode;
        ndc.SubmitChanges();
    }
}


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

.NET Framework

3.5, 3.0, 2.0에서 지원
표시: