Bagikan melalui


SqlCacheDependency Konstruktor

Definisi

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 menggunakan select 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.

databaseEntryNameadalah null.

-atau-

tableNameadalah null.

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.

Lihat juga

Berlaku untuk