SqlCacheDependency Constructeurs
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Initialise une nouvelle instance de la classe SqlCacheDependency.
Surcharges
| Nom | Description |
|---|---|
| SqlCacheDependency(SqlCommand) |
Initialise une nouvelle instance de la classe à l’aide SqlCacheDependency de l’élément fourni SqlCommand pour créer une dépendance de clé de cache. |
| SqlCacheDependency(String, String) |
Initialise une nouvelle instance de la SqlCacheDependency classe à l’aide des paramètres fournis pour créer une dépendance de clé de cache. |
SqlCacheDependency(SqlCommand)
Initialise une nouvelle instance de la classe à l’aide SqlCacheDependency de l’élément fourni SqlCommand pour créer une dépendance de clé de cache.
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)
Paramètres
- sqlCmd
- SqlCommand
Utilisé SqlCommand pour créer un SqlCacheDependency objet.
Exceptions
Le sqlCmd paramètre est null.
L’instance a sa SqlCommand propriété définie NotificationAutoEnlist et il existe une true directive sur la page avec l’attribut @ OutputCache défini sur SqlDependency.CommandNotification
Remarques
Ce constructeur est utilisé pour créer des objets SqlCacheDependency qui utilisent la fonctionnalité de notification de requête des produits SQL Server 2005.
Les instructions SQL associées au sqlCmd paramètre doivent inclure les éléments suivants :
Noms de tables complets, y compris le nom du propriétaire de la table. Par exemple, pour faire référence à une table nommée Customers appartenant au propriétaire de la base de données, l’instruction SQL doit faire référence à
dbo.customers.Noms de colonnes explicites dans l’instruction Select. Vous ne pouvez pas utiliser le caractère générique astérisque (*) pour sélectionner toutes les colonnes d’une table. Par exemple, au lieu de
select * from dbo.customers, vous devez utiliserselect name, address, city, state from dbo.customers.
Ce constructeur ne peut pas être utilisé pour associer une instance SqlCommand à une instance SqlCacheDependency sur une page à l’aide de notifications de requête SQL Server 2005 avec la mise en cache de sortie au niveau de la page.
Voir aussi
S’applique à
SqlCacheDependency(String, String)
Initialise une nouvelle instance de la SqlCacheDependency classe à l’aide des paramètres fournis pour créer une dépendance de clé de cache.
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)
Paramètres
- databaseEntryName
- String
Nom d’une base de données définie dans l’élément bases de données du fichier Web.config de l’application.
- tableName
- String
Nom de la table de base de données à laquelle il SqlCacheDependency est associé.
Exceptions
Échec de la vérification SqlClientPermission interne.
- ou -
La databaseEntryName liste des bases de données configurées pour les notifications basées sur des tables est introuvable.
- ou -
L’objet SqlCacheDependency n’a pas pu se connecter à la base de données pendant l’initialisation.
- ou -
L’objet SqlCacheDependency a rencontré une erreur d’autorisation refusée sur la base de données ou sur les procédures stockées de base de données qui prennent en charge l’objet SqlCacheDependency .
Le tableName paramètre est Empty.
L’interrogation n’est pas activée pour le SqlCacheDependency.
- ou -
L’intervalle d’interrogation n’est pas correctement configuré.
- ou -
Aucune chaîne de connexion n'a été spécifiée dans le fichier de configuration de l'application.
- ou -
Le chaîne de connexion spécifié dans le fichier de configuration de l'application est introuvable.
- ou -
La chaîne de connexion spécifiée dans le fichier de configuration de l'application est une chaîne vide.
La base de données spécifiée dans le paramètre n’est pas activée pour les databaseEntryName notifications de modification.
La table de base de données spécifiée dans le paramètre n’est pas activée pour les tableName notifications de modification.
Exemples
L’exemple de code suivant utilise ce constructeur pour créer une instance de la classe SqlCacheDependency associée à une table de base de données nommée Categories dans une base de données SQL Server nommée Northwind.
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
Remarques
Ce constructeur est utilisé pour créer des objets SqlCacheDependency pour les produits SQL Server 7.0 et SQL Server 2000.
Le nom de la base de données passé au database paramètre doit être défini dans le fichier Web.config de l’application. Par exemple, le fichier Web.config suivant définit une base de données nommée pubs pour SqlCacheDependency les notifications de modification.
<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>
Deux exceptions sont généralement levées lorsque ce constructeur est utilisé : DatabaseNotEnabledForNotificationException et TableNotEnabledForNotificationException. Si une DatabaseNotEnabledForNotificationException exception est levée, vous pouvez appeler la méthode dans le SqlCacheDependencyAdmin.EnableNotifications code de gestion des exceptions ou utiliser l’outil aspnet_regsql.exe en ligne de commande pour configurer la base de données pour les notifications. Si une TableNotEnabledForNotificationException exception est levée, vous pouvez appeler la SqlCacheDependencyAdmin.EnableTableForNotifications méthode ou l’utiliser aspnet_regsql.exe pour configurer la table pour les notifications.