Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. |
Traducción
Original
|
SqlCacheDependency (Clase)
Establece una relación entre un elemento almacenado en un objeto Cache de la aplicación ASP.NET y, o bien una tabla de base de datos de SQL Server concreta, o bien los resultados de una consulta de SQL Server 2005. Esta clase no puede heredarse.
Ensamblado: System.Web (en System.Web.dll)
El tipo SqlCacheDependency expone los siguientes miembros.
| Nombre | Descripción | |
|---|---|---|
|
SqlCacheDependency(SqlCommand) | Inicializa una nueva instancia de la clase SqlCacheDependency, utilizando el SqlCommand que se proporciona para crear una dependencia de clave de caché. |
|
SqlCacheDependency(String, String) | Inicializa una nueva instancia de la clase SqlCacheDependency, utilizando los parámetros proporcionados para crear una dependencia de clave de caché. |
| Nombre | Descripción | |
|---|---|---|
|
HasChanged | Obtiene un valor que indica si el objeto CacheDependency ha cambiado. (Se hereda de CacheDependency). |
|
UtcLastModified | Obtiene la hora a la que se cambió la dependencia por última vez. (Se hereda de CacheDependency). |
| Nombre | Descripción | |
|---|---|---|
|
CreateOutputCacheDependency | 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. |
|
DependencyDispose | Libera los recursos utilizados por la clase CacheDependency y cualquier clase que derive de CacheDependency. (Se hereda de CacheDependency). |
|
Dispose | Libera los recursos utilizados por el objeto CacheDependency. (Se hereda de CacheDependency). |
|
Equals(Object) | Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object). |
|
Finalize | Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object). |
|
FinishInit | Finaliza la inicialización del objeto CacheDependency. (Se hereda de CacheDependency). |
|
GetHashCode | Actúa como función hash para un tipo concreto. (Se hereda de Object). |
|
GetType | Obtiene el objeto Type de la instancia actual. (Se hereda de Object). |
|
GetUniqueID | Recupera un identificador único para un objeto SqlCacheDependency. (Invalida a CacheDependency.GetUniqueID()). |
|
MemberwiseClone | Crea una copia superficial del objeto Object actual. (Se hereda de Object). |
|
NotifyDependencyChanged | Notifica al objeto CacheDependency base que la dependencia representada por una clase CacheDependency derivada ha cambiado. (Se hereda de CacheDependency). |
|
SetUtcLastModified | Marca la hora a la que se cambió una dependencia por última vez. (Se hereda de CacheDependency). |
|
ToString | Devuelve una cadena que representa el objeto actual. (Se hereda de Object). |
En todas las versiones compatibles de SQL Server (Microsoft SQL Server 7.0, Microsoft SQL Server 2000 y SQL Server 2005) la clase SqlCacheDependency supervisa una tabla de base de datos de SQL Server concreta. Cuando la tabla cambia, los elementos asociados a la tabla se quitan de Cache y una nueva versión del elemento se agrega a Cache.
La clase SqlCacheDependency también admite la integración con la clase System.Data.SqlClient.SqlDependency cuando se utiliza una base de datos de SQL Server 2005. El mecanismo de notificación de consulta de SQL Server 2005 detecta los cambios en los datos que invalidan los resultados de una consulta SQL y quita los elementos almacenados en memoria caché asociados a la consulta SQL de System.Web.Caching.Cache.
Puede usar la clase SqlCacheDependency para agregar elementos a la memoria Cache de la aplicación que dependan de una tabla de base de datos de SQL Server o de una consulta SQL al utilizar SQL Server 2005. También puede utilizar esta clase con la directiva @ OutputCache para hacer que una página almacenada en caché de salida o un control de usuario dependa de una tabla de base de datos de SQL Server. Por último, puede utilizar la clase SqlCacheDependency con la directiva de páginas @ OutputCache para hacer que una página almacenada en la memoria caché de salida dependa de los resultados de una consulta SQL al utilizar SQL Server 2005. La notificación de consultas mediante SQL Server 2005 no es compatible con la directiva @ OutputCache para los controles de usuario.
Nota
|
|---|
|
Para que esta clase funcione correctamente utilizando notificaciones basadas en tablas, la base de datos y todas las tablas en las que desee establecer dependencias deberán tener habilitadas las notificaciones. Puede habilitar las notificaciones llamando a los métodos de la clase SqlCacheDependencyAdmin o utilizando la herramienta de la línea de comandos Aspnet_regsql.exe. Además, deberán incluirse las opciones de configuración adecuadas en el archivo Web.config de la aplicación. No se necesita ninguna configuración explícita cuando se usa un objeto SqlCacheDependency con la notificación de consultas de SQL Server 2005. Vea los Libros en pantalla de SQL Server 2005 para obtener información sobre las restricciones aplicables a los tipos de consultas Transact-SQL que están permitidos cuando se utiliza la notificación de consultas. |
En el ejemplo siguiente se muestra un archivo Web.config de ASP.NET que habilita dependencias basadas en tabla en una tabla de base de datos de SQL Server.
<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>
El ejemplo de código siguiente utiliza los controles SqlDataSource y GridView para mostrar una tabla de base de datos. Cuando la página está cargada, la página intenta crear un objeto SqlCacheDependency. Una vez creado el objeto SqlCacheDependency, la página agrega un elemento a la Cache con una dependencia en el objeto SqlCacheDependency. Se debe utilizar un control de excepciones similar al mostrado aquí.
<%@ 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"> 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."; } } </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>
Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2
.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Nota