SqlCacheDependency 클래스

정의

ASP.NET 애플리케이션의 Cache 개체에 저장된 항목과 특정 SQL Server 데이터베이스 테이블 또는 SQL Server 2005 쿼리의 결과 간 관계를 설정합니다.Establishes a relationship between an item stored in an ASP.NET application's Cache object and either a specific SQL Server database table or the results of a SQL Server 2005 query. 이 클래스는 상속될 수 없습니다.This class cannot be inherited.

public ref class SqlCacheDependency sealed : System::Web::Caching::CacheDependency
public sealed class SqlCacheDependency : System.Web.Caching.CacheDependency
type SqlCacheDependency = class
    inherit CacheDependency
Public NotInheritable Class SqlCacheDependency
Inherits CacheDependency
상속
SqlCacheDependency

예제

다음 코드 예제에서는 합니다 SqlDataSourceGridView 데이터베이스 테이블을 표시 하는 컨트롤입니다.The following code example uses the SqlDataSource and GridView controls to display a database table. 페이지가 로드 될 때 페이지 만들려고를 SqlCacheDependency 개체입니다.When the page is loaded, the page attempts to create a SqlCacheDependency object. 후를 SqlCacheDependency 개체가 만들어지면 페이지에 항목을 추가 합니다 Cache 에 대 한 종속성을 SqlCacheDependency 개체.After the SqlCacheDependency object is created, the page adds an item to the Cache with a dependency on the SqlCacheDependency object. 여기에 표시 된 유사한 예외 처리를 사용 해야 합니다.You should use exception handling similar to that shown here.

<%@ Page Language="C#" Debug="true" %>
<%@ import Namespace="System.Data.SqlClient" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
// <snippet2>
    public void Page_Load(object Src, EventArgs E) 
    { 
        // Declare the SqlCacheDependency instance, SqlDep. 
        SqlCacheDependency SqlDep = null; 
        
        // Check the Cache for the SqlSource key. 
        // If it isn't there, create it with a dependency 
        // on a SQL Server table using the SqlCacheDependency class. 
        if (Cache["SqlSource"] == null) { 
            
            // Because of possible exceptions thrown when this 
            // code runs, use Try...Catch...Finally syntax. 
            try { 
                // Instantiate SqlDep using the SqlCacheDependency constructor. 
                SqlDep = new SqlCacheDependency("Northwind", "Categories"); 
            } 
            
            // Handle the DatabaseNotEnabledForNotificationException with 
            // a call to the SqlCacheDependencyAdmin.EnableNotifications method. 
            catch (DatabaseNotEnabledForNotificationException exDBDis) { 
                try { 
                    SqlCacheDependencyAdmin.EnableNotifications("Northwind"); 
                } 
                
                // If the database does not have permissions set for creating tables, 
                // the UnauthorizedAccessException is thrown. Handle it by redirecting 
                // to an error page. 
                catch (UnauthorizedAccessException exPerm) { 
                    Response.Redirect(".\\ErrorPage.htm"); 
                } 
            } 
            
            // Handle the TableNotEnabledForNotificationException with 
            // a call to the SqlCacheDependencyAdmin.EnableTableForNotifications method. 
            catch (TableNotEnabledForNotificationException exTabDis) { 
                try { 
                    SqlCacheDependencyAdmin.EnableTableForNotifications("Northwind", "Categories"); 
                } 
                
                // If a SqlException is thrown, redirect to an error page. 
                catch (SqlException exc) { 
                    Response.Redirect(".\\ErrorPage.htm"); 
                } 
            } 
            
            // If all the other code is successful, add MySource to the Cache 
            // with a dependency on SqlDep. If the Categories table changes, 
            // MySource will be removed from the Cache. Then generate a message 
            // that the data is newly created and added to the cache. 
            finally { 
                Cache.Insert("SqlSource", Source1, SqlDep); 
                CacheMsg.Text = "The data object was created explicitly."; 
                
            } 
        } 
        
        else { 
            CacheMsg.Text = "The data was retrieved from the Cache."; 
        } 
    } 
// </snippet2>
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <p>
        </p>
        <p>
            <asp:SqlDataSource id="Source1" runat="server" SelectCommand="SELECT * FROM [Categories]" UpdateCommand="UPDATE [Categories] SET [CategoryName]=@CategoryName,[Description]=@Description,[Picture]=@Picture WHERE [CategoryID]=@CategoryID" ConnectionString="<%$ ConnectionStrings:Northwind %>"></asp:SqlDataSource>
            <asp:GridView id="GridView1" runat="server" DataKeyNames="CategoryID" AllowSorting="True" AllowPaging="True" DataSourceID="Source1"></asp:GridView>
        </p>
        <p>
        </p>
        <p>
            <asp:Label id="CacheMsg" runat="server" AssociatedControlID="GridView1"></asp:Label>
        </p>
   </form>
</body>
</html>
<%@ Page Language="VB" Debug="True" %>
<%@ import Namespace="System.Data.SqlClient" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
' <snippet2>
    Sub Page_Load(Src As Object, E As EventArgs)
       ' Declare the SqlCacheDependency instance, SqlDep.
       Dim SqlDep As SqlCacheDependency

       ' Check the Cache for the SqlSource key.
       ' If it isn't there, create it with a dependency
       ' on a SQL Server table using the SqlCacheDependency class.
       If Cache("SqlSource") Is Nothing

          ' Because of possible exceptions thrown when this
          ' code runs, use Try...Catch...Finally syntax.
          Try
             ' Instantiate SqlDep using the SqlCacheDependency constructor.
             SqlDep = New SqlCacheDependency("Northwind", "Categories")

          ' Handle the DatabaseNotEnabledForNotificationException with
          ' a call to the SqlCacheDependencyAdmin.EnableNotifications method.
          Catch exDBDis As DatabaseNotEnabledForNotificationException
             Try
                SqlCacheDependencyAdmin.EnableNotifications("Northwind")

             ' If the database does not have permissions set for creating tables,
             ' the UnauthorizedAccessException is thrown. Handle it by redirecting
             ' to an error page.
             Catch exPerm As UnauthorizedAccessException
                 Response.Redirect(".\ErrorPage.htm")
             End Try

          ' Handle the TableNotEnabledForNotificationException with
                ' a call to the SqlCacheDependencyAdmin.EnableTableForNotifications method.
          Catch exTabDis As TableNotEnabledForNotificationException
             Try
                SqlCacheDependencyAdmin.EnableTableForNotifications( _
                 "Northwind", "Categories")

             ' If a SqlException is thrown, redirect to an error page.
             Catch exc As SqlException
                 Response.Redirect(".\ErrorPage.htm")
             End Try

          ' If all the other code is successful, add MySource to the Cache
          ' with a dependency on SqlDep. If the Categories table changes,
          ' MySource will be removed from the Cache. Then generate a message
                ' that the data is newly created and added to the cache.
          Finally
             Cache.Insert("SqlSource", Source1, SqlDep)
                CacheMsg.Text = "The data object was created explicitly."

          End Try

        Else
           CacheMsg.Text = "The data was retrieved from the Cache."
        End If
    End Sub
' </snippet2>

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <p>
        </p>
        <p>
            <asp:SqlDataSource id="Source1" runat="server" SelectCommand="SELECT * FROM [Categories]" UpdateCommand="UPDATE [Categories] SET [CategoryName]=@CategoryName,[Description]=@Description,[Picture]=@Picture WHERE [CategoryID]=@CategoryID" ConnectionString="<%$ ConnectionStrings:Northwind %>"></asp:SqlDataSource>
            <asp:GridView id="GridView1" runat="server" DataKeyNames="CategoryID" AllowSorting="True" AllowPaging="True" DataSourceID="Source1"></asp:GridView>
        </p>
        <p>
        </p>
        <p>
            <asp:Label id="CacheMsg" runat="server" AssociatedControlID="GridView1"></asp:Label>
        </p>
   </form>
</body>
</html>

설명

모든 지원 되는 SQL Server (Microsoft SQL Server 7.0, Microsoft SQL Server 2000 및 SQL Server 2005)의 버전을 SqlCacheDependency 클래스는 특정 SQL Server 데이터베이스 테이블을 모니터링 합니다.On all supported versions of SQL Server (Microsoft SQL Server 7.0, Microsoft SQL Server 2000, and SQL Server 2005) the SqlCacheDependency class monitors a specific SQL Server database table. 경우 테이블 변경 테이블에 연결 된 항목에서 제거 됩니다는 Cache, 항목의 새 버전에 추가 됩니다는 Cache합니다.When the table changes, items associated with the table are removed from the Cache, and a new version of the item is added to the Cache.

SqlCacheDependency 클래스와의 통합을 지원 합니다 System.Data.SqlClient.SqlDependency 사용 하는 경우 클래스를 SQL Server 2005SQL Server 2005 데이터베이스.The SqlCacheDependency class also supports integration with the System.Data.SqlClient.SqlDependency class when using a SQL Server 2005SQL Server 2005 database. 쿼리 알림 메커니즘 SQL Server 2005SQL Server 2005 SQL 쿼리를 설정 하 고 제거 항목에서 SQL 쿼리를 사용 하 여 연결 된 캐시 된 결과 무효화 하는 데이터의 변경 사항을 감지는 System.Web.Caching.Cache합니다.The query notification mechanism of SQL Server 2005SQL Server 2005 detects changes to data that invalidate the results of an SQL query and removes any cached items associated with the SQL query from the System.Web.Caching.Cache.

사용할 수는 SqlCacheDependency 애플리케이션의 항목을 추가할 클래스 Cache 사용 하는 경우 SQL 쿼리 또는 SQL Server 데이터베이스 테이블에 종속 된 SQL Server 2005SQL Server 2005합니다.You can use the SqlCacheDependency class to add items to your application's Cache that are dependent on either a SQL Server database table or on an SQL query when using SQL Server 2005SQL Server 2005. 출력 캐시 된 페이지 또는 사용자 정의 컨트롤을 SQL Server 데이터베이스 테이블에 종속 되 게 하는 지시문을 사용 하 여이 클래스를 사용할 수 있습니다.You can also use this class with the directive to make an output-cached page or a user control dependent on a SQL Server database table. 마지막으로 사용할 수 있습니다 합니다 SqlCacheDependency 있도록 출력 캐시 된 페이지를 사용 하는 SQL 쿼리의 결과에 따라 사용 하는 경우 page 지시문을 사용 하 여 클래스 SQL Server 2005SQL Server 2005합니다.Finally, you can use the SqlCacheDependency class with the page directive to make an output-cached page dependent on the results of an SQL query when using SQL Server 2005SQL Server 2005. 사용 하 여 쿼리 알림을 SQL Server 2005SQL Server 2005 사용자 컨트롤에 대 한 지시문에서 지원 되지 않습니다.Query notification using SQL Server 2005SQL Server 2005 is not supported on the directive for user controls.

참고

제대로 작동 하려면이 클래스에 대 한 테이블 기반 알림에 사용 하는 경우 데이터베이스와 테이블에 종속 되도록 하려는 알림이 활성화 되어 있어야 합니다.For this class to work correctly when using table-based notifications, the database and any tables that you want to make dependencies on must have notifications enabled. 메서드를 호출 하 여 알림을 설정할 수 있습니다.는 SqlCacheDependencyAdmin 클래스 또는 명령줄 도구를 사용 하 여 합니다.You can enable notifications by calling methods of the SqlCacheDependencyAdmin class or by using the command-line tool. 또한 적절 한 구성 설정은 애플리케이션의 Web.config 파일에 포함 되어야 합니다.In addition, the proper configuration settings must be included in the application's Web.config file.

사용 하는 SqlCacheDependency 개체를 SQL Server 2005SQL Server 2005 쿼리 알림 명시적 구성이 필요 하지 않습니다.Using a SqlCacheDependency object with SQL Server 2005SQL Server 2005 query notification does not require any explicit configuration. 참조 된 SQL Server 2005SQL Server 2005 쿼리 알림을 사용 하는 경우 허용 되는 TRANSACT-SQL 쿼리 유형의 제한에 대 한 자세한 온라인 설명서.Consult the SQL Server 2005SQL Server 2005 Books Online for information about restrictions on the types of Transact-SQL queries that are allowed when using query notification.

다음 예제에서는 SQL Server 데이터베이스 테이블에 대 한 테이블 기반 종속성 수 있게 해 주는 ASP.NET Web.config 파일을 보여 줍니다.The following example shows an ASP.NET Web.config file that enables table-based dependencies on a SQL Server database table.

<configuration>  
  <connectionStrings>  
    <add name="Northwind" connectionString="Data Source=(local); Initial Catalog=northwind; Integrated Security=true"; providerName="System.Data.SqlClient" />  
  </connectionStrings>  
  <system.web>  
    <caching>  
      <sqlCacheDependency enabled = "true" pollTime = "60000" >  
        <databases>  
          <add name="northwind"   
            connectionStringName="Northwind"  
            pollTime="9000000"  
            />  
        </databases>  
      </sqlCacheDependency>  
    </caching>  
  </system.web>  
</configuration>  

생성자

SqlCacheDependency(SqlCommand)

캐시 키 종속성을 만드는 제공된 SqlCacheDependency를 사용하여 SqlCommand 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the SqlCacheDependency class, using the supplied SqlCommand to create a cache-key dependency.

SqlCacheDependency(String, String)

캐시 키 종속성을 만드는 제공된 매개 변수를 사용하여 SqlCacheDependency 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the SqlCacheDependency class, using the supplied parameters to create a cache-key dependency.

속성

HasChanged

CacheDependency 개체가 변경되었는지 여부를 나타내는 값을 가져옵니다.Gets a value indicating whether the CacheDependency object has changed.

(다음에서 상속됨 CacheDependency)
UtcLastModified

종속성을 마지막으로 변경한 시간을 가져옵니다.Gets the time when the dependency was last changed.

(다음에서 상속됨 CacheDependency)

메서드

CreateOutputCacheDependency(String)

ASP.NET 애플리케이션의 OutputCache 개체에 저장되어 있는 항목과 SQL Server 데이터베이스 테이블 사이의 종속 관계를 만듭니다.Creates a dependency relationship between an item that is stored in an ASP.NET application's OutputCache object and a SQL Server database table.

DependencyDispose()

CacheDependency 클래스 및 CacheDependency에서 파생되는 클래스에서 사용되는 리소스를 해제합니다.Releases the resources used by the CacheDependency class and any classes that derive from CacheDependency.

(다음에서 상속됨 CacheDependency)
Dispose()

CacheDependency 개체가 사용하는 리소스를 해제합니다.Releases the resources used by the CacheDependency object.

(다음에서 상속됨 CacheDependency)
Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
FinishInit()

CacheDependency 개체의 초기화를 완료합니다.Completes initialization of the CacheDependency object.

(다음에서 상속됨 CacheDependency)
GetFileDependencies()

파일 종속성을 가져옵니다.Gets the file dependencies.

(다음에서 상속됨 CacheDependency)
GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
GetUniqueID()

SqlCacheDependency 개체에 대한 고유 식별자를 검색합니다.Retrieves a unique identifier for a SqlCacheDependency object.

ItemRemoved()

모니터링되는 캐시 엔트리가 제거될 때 호출됩니다.Called when a monitored cache entry is removed.

(다음에서 상속됨 CacheDependency)
KeepDependenciesAlive()

이 항목에 종속되는 모든 캐시 항목의 마지막 액세스 시간을 업데이트합니다.Updates the last access time of every cache item that depends on this item.

(다음에서 상속됨 CacheDependency)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
NotifyDependencyChanged(Object, EventArgs)

파생 CacheDependency 클래스에 나타나는 종속성이 변경되었음을 기본 CacheDependency 개체에 알립니다.Notifies the base CacheDependency object that the dependency represented by a derived CacheDependency class has changed.

(다음에서 상속됨 CacheDependency)
SetCacheDependencyChanged(Action<Object,EventArgs>)

이 종속성의 변경 내용을 관련 당사자에게 알리는 작업을 처리하기 위한 동작 메서드를 추가합니다.Adds an Action method to handle notifying interested party in changes to this dependency.

(다음에서 상속됨 CacheDependency)
SetUtcLastModified(DateTime)

종속성을 마지막으로 변경한 시간을 표시합니다.Marks the time when a dependency last changed.

(다음에서 상속됨 CacheDependency)
TakeOwnership()

첫 번째 사용자가 이 종속성의 단독 소유권을 선언하도록 허용합니다.Allows the first user to declare exclusive ownership of this dependency.

(다음에서 상속됨 CacheDependency)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

적용 대상

추가 정보