SqlCacheDependency Konstruktor
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menginisialisasi instans baru kelas SqlCacheDependency.
Overload
SqlCacheDependency(SqlCommand) |
Menginisialisasi instans SqlCacheDependency baru kelas, menggunakan yang disediakan SqlCommand untuk membuat dependensi kunci cache. |
SqlCacheDependency(String, String) |
Menginisialisasi instans SqlCacheDependency baru kelas, menggunakan parameter yang disediakan untuk membuat dependensi kunci cache. |
SqlCacheDependency(SqlCommand)
Menginisialisasi instans SqlCacheDependency baru kelas, menggunakan yang disediakan SqlCommand untuk membuat dependensi kunci 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)
Parameter
- sqlCmd
- SqlCommand
Yang SqlCommand digunakan untuk membuat SqlCacheDependency objek.
Pengecualian
Parameternya sqlCmd
adalah null
.
Instans SqlCommand memiliki properti yang NotificationAutoEnlist diatur ke true
dan ada @ OutputCache
direktif di halaman dengan atribut yang SqlDependency
diatur ke CommandNotification
.
Keterangan
Konstruktor ini digunakan untuk membuat SqlCacheDependency objek yang menggunakan fitur pemberitahuan kueri SQL Server produk 2005.
Pernyataan SQL yang terkait dengan sqlCmd
parameter harus menyertakan yang berikut:
Nama tabel yang sepenuhnya memenuhi syarat, termasuk nama pemilik tabel. Misalnya, untuk merujuk ke tabel bernama Pelanggan yang dimiliki oleh pemilik database, pernyataan SQL harus merujuk ke
dbo.customers
.Nama kolom eksplisit dalam pernyataan Pilih. Anda tidak dapat menggunakan karakter kartubebas tanda bintang (*) untuk memilih semua kolom dari tabel. Misalnya, alih-alih
select * from dbo.customers
, Anda harus menggunakanselect name, address, city, state from dbo.customers
.
Konstruktor ini tidak dapat digunakan untuk mengaitkan SqlCommand instans dengan SqlCacheDependency instans di halaman menggunakan pemberitahuan kueri SQL Server 2005 dengan penembolokan output tingkat halaman.
Lihat juga
Berlaku untuk
SqlCacheDependency(String, String)
Menginisialisasi instans SqlCacheDependency baru kelas, menggunakan parameter yang disediakan untuk membuat dependensi kunci 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)
Parameter
- databaseEntryName
- String
Nama database yang ditentukan dalam elemen database file Web.config aplikasi.
- tableName
- String
Nama tabel database yang SqlCacheDependency terkait dengannya.
Pengecualian
Pemeriksaan SqlClientPermission internal gagal.
-atau-
databaseEntryName
tidak ditemukan dalam daftar database yang dikonfigurasi untuk pemberitahuan berbasis tabel.
-atau-
Objek SqlCacheDependency tidak dapat tersambung ke database selama inisialisasi.
-atau-
Objek SqlCacheDependency mengalami kesalahan yang ditolak izin baik pada database atau pada prosedur tersimpan database yang mendukung SqlCacheDependency objek.
Parameternya tableName
adalah Empty.
Polling tidak diaktifkan untuk SqlCacheDependency.
-atau-
Interval polling tidak dikonfigurasi dengan benar.
-atau-
Tidak ada string koneksi yang ditentukan dalam file konfigurasi aplikasi.
-atau-
String koneksi yang ditentukan dalam file konfigurasi aplikasi tidak dapat ditemukan.
-atau-
String koneksi yang ditentukan dalam file konfigurasi aplikasi adalah string kosong.
Database yang ditentukan dalam databaseEntryName
parameter tidak diaktifkan untuk pemberitahuan perubahan.
Tabel database yang ditentukan dalam tableName
parameter tidak diaktifkan untuk pemberitahuan perubahan.
Contoh
Contoh kode berikut menggunakan konstruktor ini untuk membuat instans SqlCacheDependency kelas yang terkait dengan tabel database bernama Kategori dalam database SQL Server bernama 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
Keterangan
Konstruktor ini digunakan untuk membuat SqlCacheDependency objek untuk produk SQL Server 7.0 dan SQL Server 2000.
Nama database yang diteruskan ke database
parameter harus ditentukan dalam file Web.config aplikasi. Misalnya, file Web.config berikut menentukan database bernama pub untuk SqlCacheDependency pemberitahuan perubahan.
<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>
Dua pengecualian umumnya dilemparkan ketika konstruktor ini digunakan: DatabaseNotEnabledForNotificationException dan TableNotEnabledForNotificationException.
DatabaseNotEnabledForNotificationException Jika dilemparkan, Anda dapat memanggil SqlCacheDependencyAdmin.EnableNotifications metode dalam kode penanganan pengecualian, atau menggunakan aspnet_regsql.exe
alat baris perintah untuk menyiapkan database untuk pemberitahuan.
TableNotEnabledForNotificationException Jika dilemparkan, Anda dapat memanggil SqlCacheDependencyAdmin.EnableTableForNotifications metode atau menggunakan aspnet_regsql.exe
untuk menyiapkan tabel untuk pemberitahuan.