이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

ObjectDataSource.CacheKeyDependency 속성

 

게시 날짜: 2016년 11월

캐시 개체 데이터 소스 컨트롤에 의해 만들어진 모든 데이터에 연결 된 사용자 정의 키 종속성을 가져오거나 설정 합니다.

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

public virtual string CacheKeyDependency { get; set; }

속성 값

Type: System.String

만든 모든 캐시 개체를 식별 하는 키의 ObjectDataSource합니다.

CacheKeyDependency 임의의 문자열 값으로 속성을 설정할 수 있습니다.

키 만료 되 면 캐시의 모든 개체도 명시적으로 만료 됩니다. 이 하 여 만든 캐시 항목을 무효화할 수 있습니다는 ObjectDataSource 고유한 페이지에서 코드 프로그래밍 방식으로 합니다.

ObjectDataSource 컨트롤이 데이터 캐싱을 지원 합니다. 데이터 캐시 되 면 호출 하는 Select 메서드 데이터를 검색 비즈니스 아닌 캐시에서 개체를 ObjectDataSource 작동 합니다. 캐시 만료 되 면는 Select 메서드는 비즈니스 개체에서 데이터를 검색 하 고 다시 데이터를 캐시 합니다.

ObjectDataSource 컨트롤은 자동으로 데이터를 캐시 때는 EnableCaching 속성이 trueCacheDuration 속성 캐시는 캐시 엔트리가 삭제 되기 전에 데이터를 저장 하는 시간 (초) 수를 나타내는 0 보다 큰 값으로 설정 됩니다. 값이 0는 무한정 캐시를 나타냅니다.

설정할 수는 CacheKeyDependency 속성으로 만들어진 모든 캐시 항목 간의 종속성을 만들려면는 ObjectDataSource 컨트롤 및 키입니다. 있습니다 수 캐시 항목을 모두 프로그래밍 방식으로 언제 든 지 하 여 만료 키를 만료 합니다. 키를 사용 하 여 만료는 Cache.Remove 메서드를 현재 CacheKeyDependency 매개 변수로 값입니다.

모든 조합에 대 한 고유 캐시 엔트리 만들어집니다는 CacheDuration, CacheExpirationPolicy, TypeName, SelectMethod, 및 SelectParameters 속성입니다. 여러 ObjectDataSource 컨트롤 같은 캐시 엔트리 시나리오에서 사용할 수 있는 동일한 유형, 메서드 및 매개 변수를 사용 하 여 데이터 로드 합니다.

다음 세 가지 예제는 웹 페이지, 코드 숨김 페이지 클래스 및 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>

두 번째 예제에 대 한 처리기를 보여 줍니다.는 Load 이벤트 및에 대 한 처리기는 Click 의 이벤트는 Button 제어 합니다. 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 테이블을 쿼리 하는 클래스입니다. 이 예제에서는 LINQ to SQL 클래스를 나타내는 Northwind 데이터베이스와 Employees 테이블입니다. 자세한 내용은 참조 하는 방법: 만들기 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();
    }
}

.NET Framework
2.0 이후 사용 가능
맨 위로 이동
표시: