SqlCacheDependency Constructores
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Inicializa una nueva instancia de la clase SqlCacheDependency.
Sobrecargas
| Nombre | Description |
|---|---|
| SqlCacheDependency(SqlCommand) |
Inicializa una nueva instancia de la SqlCacheDependency clase utilizando el proporcionado SqlCommand para crear una dependencia de clave de caché. |
| SqlCacheDependency(String, String) |
Inicializa una nueva instancia de la SqlCacheDependency clase utilizando los parámetros proporcionados para crear una dependencia de clave de caché. |
SqlCacheDependency(SqlCommand)
Inicializa una nueva instancia de la SqlCacheDependency clase utilizando el proporcionado SqlCommand para crear una dependencia de clave de caché.
public:
SqlCacheDependency(System::Data::SqlClient::SqlCommand ^ sqlCmd);
public SqlCacheDependency(System.Data.SqlClient.SqlCommand sqlCmd);
new System.Web.Caching.SqlCacheDependency : System.Data.SqlClient.SqlCommand -> System.Web.Caching.SqlCacheDependency
Public Sub New (sqlCmd As SqlCommand)
Parámetros
- sqlCmd
- SqlCommand
que SqlCommand se usa para crear un SqlCacheDependency objeto .
Excepciones
El sqlCmd parámetro es null.
La SqlCommand instancia tiene su NotificationAutoEnlist propiedad establecida true en y hay una @ OutputCache directiva en la página con el SqlDependency atributo establecido CommandNotificationen .
Comentarios
Este constructor se usa para crear objetos SqlCacheDependency que usan la característica de notificación de consulta de productos SQL Server 2005.
Las instrucciones SQL asociadas al sqlCmd parámetro deben incluir lo siguiente:
Nombres de tabla completos, incluido el nombre del propietario de la tabla. Por ejemplo, para hacer referencia a una tabla denominada Customers que pertenece al propietario de la base de datos, la instrucción SQL debe hacer referencia a
dbo.customers.Nombres de columna explícitos en la instrucción Select. No puede usar el carácter comodín asterisco (*) para seleccionar todas las columnas de una tabla. Por ejemplo, en lugar de
select * from dbo.customers, debe usarselect name, address, city, state from dbo.customers.
Este constructor no se puede usar para asociar una instancia de SqlCommand con una instancia de SqlCacheDependency en una página mediante notificaciones de consulta de SQL Server 2005 con el almacenamiento en caché de salida de nivel de página.
Consulte también
Se aplica a
SqlCacheDependency(String, String)
Inicializa una nueva instancia de la SqlCacheDependency clase utilizando los parámetros proporcionados para crear una dependencia de clave de caché.
public:
SqlCacheDependency(System::String ^ databaseEntryName, System::String ^ tableName);
public SqlCacheDependency(string databaseEntryName, string tableName);
new System.Web.Caching.SqlCacheDependency : string * string -> System.Web.Caching.SqlCacheDependency
Public Sub New (databaseEntryName As String, tableName As String)
Parámetros
- databaseEntryName
- String
Nombre de una base de datos definida en el elemento databases del archivo Web.config de la aplicación.
- tableName
- String
Nombre de la tabla de base de datos a la SqlCacheDependency que está asociado.
Excepciones
Error en la comprobación SqlClientPermission interna.
O bien
No databaseEntryName se encontró en la lista de bases de datos configuradas para las notificaciones basadas en tablas.
O bien
El SqlCacheDependency objeto no se pudo conectar a la base de datos durante la inicialización.
O bien
El SqlCacheDependency objeto encontró un error denegado por permisos en la base de datos o en los procedimientos almacenados de la base de datos que admiten el SqlCacheDependency objeto .
El tableName parámetro es Empty.
El sondeo no está habilitado para .SqlCacheDependency
O bien
El intervalo de sondeo no está configurado correctamente.
O bien
No se especificó ningún cadena de conexión en el archivo de configuración de la aplicación.
O bien
No se encontró el cadena de conexión especificado en el archivo de configuración de la aplicación.
O bien
El cadena de conexión especificado en el archivo de configuración de la aplicación es una cadena vacía.
La base de datos especificada en el databaseEntryName parámetro no está habilitada para las notificaciones de cambio.
La tabla de base de datos especificada en el tableName parámetro no está habilitada para las notificaciones de cambio.
Ejemplos
En el ejemplo de código siguiente se usa este constructor para crear una instancia de la clase />
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.";
}
}
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
Comentarios
Este constructor se usa para crear objetos /> de
El nombre de la base de datos pasado al database parámetro debe definirse en el archivo Web.config de la aplicación. Por ejemplo, el siguiente archivo Web.config define una base de datos denominada pubs para SqlCacheDependency las notificaciones de cambios.
<configuration>
<connectionStrings>
<add name="Pubs" connectionString="Data Source=(local); Initial Catalog=pubs; Integrated Security=true"; providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<caching>
<sqlCacheDependency enabled = "true" pollTime = "60000" >
<databases>
<add name="pubs"
connectionStringName="pubs"
pollTime="9000000"
/>
</databases>
</sqlCacheDependency>
</caching>
</system.web>
</configuration>
Normalmente se producen dos excepciones cuando se usa este constructor: DatabaseNotEnabledForNotificationException y TableNotEnabledForNotificationException. Si se produce una DatabaseNotEnabledForNotificationException excepción, puede llamar al SqlCacheDependencyAdmin.EnableNotifications método en código de control de excepciones o usar la aspnet_regsql.exe herramienta de línea de comandos para configurar la base de datos para las notificaciones. Si se produce una TableNotEnabledForNotificationException excepción , puede llamar al SqlCacheDependencyAdmin.EnableTableForNotifications método o usar aspnet_regsql.exe para configurar la tabla para las notificaciones.