SqlCacheDependency Constructors
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Initialiseert een nieuw exemplaar van de SqlCacheDependency klasse.
Overloads
| Name | Description |
|---|---|
| SqlCacheDependency(SqlCommand) |
Initialiseert een nieuw exemplaar van de klasse met behulp van de opgegeven SqlCommand instantie om een afhankelijkheid van de SqlCacheDependency cachesleutel te maken. |
| SqlCacheDependency(String, String) |
Initialiseert een nieuw exemplaar van de klasse met behulp van de opgegeven parameters om een afhankelijkheid van de SqlCacheDependency cachesleutel te maken. |
SqlCacheDependency(SqlCommand)
Initialiseert een nieuw exemplaar van de klasse met behulp van de opgegeven SqlCommand instantie om een afhankelijkheid van de SqlCacheDependency cachesleutel te maken.
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)
Parameters
- sqlCmd
- SqlCommand
Een SqlCommand die wordt gebruikt om een SqlCacheDependency object te maken.
Uitzonderingen
De sqlCmd parameter is null.
De SqlCommand eigenschap van het exemplaar is NotificationAutoEnlist ingesteld true op en er is een @ OutputCache instructie op de pagina waarop het SqlDependency kenmerk is ingesteld CommandNotification.
Opmerkingen
Deze constructor wordt gebruikt om SqlCacheDependency-objecten te maken die gebruikmaken van de querymeldingsfunctie van SQL Server 2005-producten.
SQL-instructies die aan de sqlCmd parameter zijn gekoppeld, moeten het volgende bevatten:
Volledig gekwalificeerde tabelnamen, inclusief de naam van de eigenaar van de tabel. Als u bijvoorbeeld wilt verwijzen naar een tabel met de naam Klanten die eigendom is van de database-eigenaar, moet de SQL-instructie verwijzen naar
dbo.customers.Expliciete kolomnamen in de instructie Select. U kunt het jokerteken sterretje (*) niet gebruiken om alle kolommen in een tabel te selecteren. In plaats van
select * from dbo.customersbijvoorbeeld, moet u gebruikenselect name, address, city, state from dbo.customers.
Deze constructor kan niet worden gebruikt om een SqlCommand-exemplaar te koppelen aan een SqlCacheDependency-exemplaar op een pagina met behulp van SQL Server 2005-querymeldingen met cacheopslag op paginaniveau.
Zie ook
Van toepassing op
SqlCacheDependency(String, String)
Initialiseert een nieuw exemplaar van de klasse met behulp van de opgegeven parameters om een afhankelijkheid van de SqlCacheDependency cachesleutel te maken.
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)
Parameters
- databaseEntryName
- String
De naam van een database die is gedefinieerd in het database-element van het Web.config-bestand van de toepassing.
- tableName
- String
De naam van de databasetabel waaraan de SqlCacheDependency tabel is gekoppeld.
Uitzonderingen
De interne controle op SqlClientPermission mislukt.
– of –
De databaseEntryName database is niet gevonden in de lijst met databases die zijn geconfigureerd voor meldingen op basis van tabellen.
– of –
Het SqlCacheDependency object kan tijdens de initialisatie geen verbinding maken met de database.
– of –
Er SqlCacheDependency is een fout opgetreden die is geweigerd voor het object in de database of in de opgeslagen databaseprocedures die ondersteuning bieden voor het SqlCacheDependency object.
De tableName parameter is Empty.
Polling is niet ingeschakeld voor de SqlCacheDependency.
– of –
Het polling-interval is niet juist geconfigureerd.
– of –
Er is geen verbindingsreeks opgegeven in het configuratiebestand van de toepassing.
– of –
De verbindingsreeks die is opgegeven in het configuratiebestand van de toepassing, is niet gevonden.
– of –
De verbindingsreeks die zijn opgegeven in het configuratiebestand van de toepassing, is een lege tekenreeks.
De database die is opgegeven in de databaseEntryName parameter, is niet ingeschakeld voor wijzigingsmeldingen.
De databasetabel die is opgegeven in de tableName parameter, is niet ingeschakeld voor wijzigingsmeldingen.
Voorbeelden
In het volgende codevoorbeeld wordt deze constructor gebruikt om een exemplaar van de klasse SqlCacheDependency te maken die is gekoppeld aan een databasetabel met de naam Categorieën in een SQL Server-database met de naam 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
Opmerkingen
Deze constructor wordt gebruikt voor het maken van SqlCacheDependency objecten voor SQL Server 7.0 en SQL Server 2000 producten.
De databasenaam die aan de database parameter is doorgegeven, moet worden gedefinieerd in het Web.config-bestand van de toepassing. Het volgende Web.config bestand definieert bijvoorbeeld een database met de naam pubs voor SqlCacheDependency wijzigingsmeldingen.
<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>
Er worden vaak twee uitzonderingen gegenereerd wanneer deze constructor wordt gebruikt: DatabaseNotEnabledForNotificationException en TableNotEnabledForNotificationException. Als er een DatabaseNotEnabledForNotificationException fout optreedt, kunt u de SqlCacheDependencyAdmin.EnableNotifications methode aanroepen in uitzonderingsafhandelingscode of het aspnet_regsql.exe opdrachtregelprogramma gebruiken om de database voor meldingen in te stellen. Als er een TableNotEnabledForNotificationException optreedt, kunt u de SqlCacheDependencyAdmin.EnableTableForNotifications methode aanroepen of gebruiken aspnet_regsql.exe om de tabel in te stellen voor meldingen.