SqlCacheDependency Clase

Definición

Establece una relación entre un elemento almacenado en un objeto Cache de aplicación ASP.NET y una tabla de base de datos de SQL Server específica o los resultados de una consulta de 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. Esta clase no puede heredarse.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
Herencia
SqlCacheDependency

Ejemplos

En el ejemplo de código siguiente SqlDataSource se GridView usan los controles y para mostrar una tabla de base de datos.The following code example uses the SqlDataSource and GridView controls to display a database table. Cuando se carga la página, la página intenta crear un SqlCacheDependency objeto.When the page is loaded, the page attempts to create a SqlCacheDependency object. Una vez SqlCacheDependency creado el objeto, la página agrega un elemento a la Cache con una dependencia en el SqlCacheDependency objeto.After the SqlCacheDependency object is created, the page adds an item to the Cache with a dependency on the SqlCacheDependency object. Debe usar el control de excepciones similar al que se muestra aquí.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>

Comentarios

En todas las versiones compatibles de SQL Server (Microsoft SQL Server 7,0, Microsoft SQL Server 2000 y SQL Server 2005), SqlCacheDependency la clase supervisa una tabla de base de datos de SQL Server específica.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. Cuando la tabla cambia, los elementos asociados a la tabla se quitan Cachede y se agrega una nueva versión del elemento Cachea.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.

La SqlCacheDependency clase también admite la integración con System.Data.SqlClient.SqlDependency la clase cuando se SQL Server 2005SQL Server 2005 utiliza una base de datos.The SqlCacheDependency class also supports integration with the System.Data.SqlClient.SqlDependency class when using a SQL Server 2005SQL Server 2005 database. El mecanismo de notificación de SQL Server 2005SQL Server 2005 consultas de detecta cambios en los datos que invalidan los resultados de una consulta SQL y quita todos los elementos almacenados en caché asociados a System.Web.Caching.Cachela consulta SQL de.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.

Puede utilizar la SqlCacheDependency clase para agregar elementos a la de Cache la aplicación que dependen de una tabla de base de datos de SQL Server o de una consulta SQL SQL Server 2005SQL Server 2005cuando se usa.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. También puede usar esta clase con la Directiva para crear una página almacenada en caché de resultados o un control de usuario que dependa de una tabla de base de datos de 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. Por último, puede usar la SqlCacheDependency clase con la Directiva de página para que una página almacenada en caché de resultados dependa de los resultados de una SQL Server 2005SQL Server 2005consulta SQL cuando se usa.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. La notificación de SQL Server 2005SQL Server 2005 consulta mediante no se admite en la Directiva para los controles de usuario.Query notification using SQL Server 2005SQL Server 2005 is not supported on the directive for user controls.

Nota

Para que esta clase funcione correctamente cuando se usan notificaciones basadas en tablas, la base de datos y las tablas en las que desea realizar las dependencias deben tener habilitadas las notificaciones.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. Puede habilitar las notificaciones llamando a métodos de la SqlCacheDependencyAdmin clase o mediante la herramienta de línea de comandos.You can enable notifications by calling methods of the SqlCacheDependencyAdmin class or by using the command-line tool. Además, se deben incluir los valores de configuración adecuados en el archivo Web. config de la aplicación.In addition, the proper configuration settings must be included in the application's Web.config file.

El uso SqlCacheDependency de un SQL Server 2005SQL Server 2005 objeto con la notificación de consulta no requiere ninguna configuración explícita.Using a SqlCacheDependency object with SQL Server 2005SQL Server 2005 query notification does not require any explicit configuration. Vea los SQL Server 2005SQL Server 2005 libros en pantalla para obtener información sobre las restricciones en los tipos de consultas de Transact-SQL que se permiten cuando se usa la notificación de consulta.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.

En el ejemplo siguiente se muestra un archivo Web. config de ASP.NET que habilita las dependencias basadas en tabla en una tabla de base de datos de SQL Server.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>  

Constructores

SqlCacheDependency(SqlCommand)

Inicializa una nueva instancia de la clase SqlCacheDependency, utilizando el SqlCommand que se proporciona para crear una dependencia de clave de caché.Initializes a new instance of the SqlCacheDependency class, using the supplied SqlCommand to create a cache-key dependency.

SqlCacheDependency(String, String)

Inicializa una nueva instancia de la clase SqlCacheDependency, utilizando los parámetros proporcionados para crear una dependencia de clave de caché.Initializes a new instance of the SqlCacheDependency class, using the supplied parameters to create a cache-key dependency.

Propiedades

HasChanged

Obtiene un valor que indica si el objeto CacheDependency ha cambiado.Gets a value indicating whether the CacheDependency object has changed.

(Heredado de CacheDependency)
UtcLastModified

Obtiene la hora a la que se cambió la dependencia por última vez.Gets the time when the dependency was last changed.

(Heredado de CacheDependency)

Métodos

CreateOutputCacheDependency(String)

Crea una relación de dependencia entre un elemento que está almacenado en el objeto OutputCache de una aplicación ASP.NET y una tabla de base de datos de 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()

Libera los recursos utilizados por la clase CacheDependency y cualquier clase que derive de CacheDependency.Releases the resources used by the CacheDependency class and any classes that derive from CacheDependency.

(Heredado de CacheDependency)
Dispose()

Libera los recursos utilizados por el objeto CacheDependency.Releases the resources used by the CacheDependency object.

(Heredado de CacheDependency)
Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
FinishInit()

Finaliza la inicialización del objeto CacheDependency.Completes initialization of the CacheDependency object.

(Heredado de CacheDependency)
GetFileDependencies()

Obtiene las dependencias de archivo.Gets the file dependencies.

(Heredado de CacheDependency)
GetHashCode()

Sirve como función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
GetUniqueID()

Recupera un identificador único para un objeto SqlCacheDependency.Retrieves a unique identifier for a SqlCacheDependency object.

ItemRemoved()

Se llama cuando se quita una entrada de caché supervisada.Called when a monitored cache entry is removed.

(Heredado de CacheDependency)
KeepDependenciesAlive()

Actualiza la hora de último acceso de cada elemento en caché que dependa de este elemento.Updates the last access time of every cache item that depends on this item.

(Heredado de CacheDependency)
MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
NotifyDependencyChanged(Object, EventArgs)

Notifica al objeto CacheDependency base que la dependencia representada por una clase CacheDependency derivada ha cambiado.Notifies the base CacheDependency object that the dependency represented by a derived CacheDependency class has changed.

(Heredado de CacheDependency)
SetCacheDependencyChanged(Action<Object,EventArgs>)

Agrega un método de acción para controlar la notificación a la parte interesada de los cambios realizados en esta dependencia.Adds an Action method to handle notifying interested party in changes to this dependency.

(Heredado de CacheDependency)
SetUtcLastModified(DateTime)

Marca la hora a la que se cambió una dependencia por última vez.Marks the time when a dependency last changed.

(Heredado de CacheDependency)
TakeOwnership()

Permite que el primer usuario declare la propiedad exclusiva de esta dependencia.Allows the first user to declare exclusive ownership of this dependency.

(Heredado de CacheDependency)
ToString()

Devuelve un valor de tipo string que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)

Se aplica a

Consulte también: