SqlCacheDependency Konstruktory

Definice

Inicializuje novou instanci SqlCacheDependency třídy.

Přetížení

SqlCacheDependency(SqlCommand)

Inicializuje novou instanci SqlCacheDependency třídy pomocí zadané SqlCommand k vytvoření závislosti cache-key.

SqlCacheDependency(String, String)

Inicializuje novou instanci třídy pomocí zadaných SqlCacheDependency parametrů k vytvoření závislosti klíče mezipaměti.

SqlCacheDependency(SqlCommand)

Inicializuje novou instanci SqlCacheDependency třídy pomocí zadané SqlCommand k vytvoření závislosti cache-key.

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)

Parametry

sqlCmd
SqlCommand

Objekt SqlCommand , který se používá k vytvoření objektu SqlCacheDependency .

Výjimky

Parametr sqlCmd je null.

Instance SqlCommand má vlastnost NotificationAutoEnlist nastavenou @ OutputCache na true a na stránce je direktiva s atributem nastaveným SqlDependency na CommandNotification.

Poznámky

Tento konstruktor se používá k vytváření SqlCacheDependency objektů, které používají funkci query-notification produktů SQL Server 2005.

Příkazy SQL přidružené k parametru sqlCmd musí obsahovat následující:

  • Plně kvalifikované názvy tabulek, včetně jména vlastníka tabulky. Pokud například chcete odkazovat na tabulku s názvem Customers(Zákazníci), kterou vlastní vlastník databáze, musí příkaz SQL odkazovat na dbo.customers.

  • Explicitní názvy sloupců v příkazu Select K výběru všech sloupců z tabulky nelze použít zástupný znak hvězdičky (*). Například místo select * from dbo.customersmusíte použít select name, address, city, state from dbo.customers.

Tento konstruktor nelze použít k přidružení SqlCommand instance k SqlCacheDependency instanci na stránce pomocí oznámení dotazů SQL Server 2005 s ukládáním výstupu na úrovni stránky do mezipaměti.

Viz také

Platí pro

SqlCacheDependency(String, String)

Inicializuje novou instanci třídy pomocí zadaných SqlCacheDependency parametrů k vytvoření závislosti klíče mezipaměti.

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)

Parametry

databaseEntryName
String

Název databáze definované v elementu databases souboru Web.config aplikace.

tableName
String

Název databázové tabulky, ke SqlCacheDependency které je přidružena.

Výjimky

Interní kontrola se SqlClientPermission nezdařila.

-nebo-

Nebyl databaseEntryName nalezen v seznamu databází nakonfigurovaných pro oznámení na základě tabulek.

-nebo-

Objekt se SqlCacheDependency během inicializace nemohl připojit k databázi.

-nebo-

U SqlCacheDependency objektu došlo k chybě odepření oprávnění buď v databázi, nebo v uložených procedurách databáze, které objekt podporují SqlCacheDependency .

Parametr tableName je Empty.

Pro . Není povolené SqlCacheDependencydotazování.

-nebo-

Interval dotazování není správně nakonfigurovaný.

-nebo-

V konfiguračním souboru aplikace nebyl zadán žádný připojovací řetězec.

-nebo-

Připojovací řetězec zadaný v konfiguračním souboru aplikace nebyl nalezen.

-nebo-

Připojovací řetězec zadaný v konfiguračním souboru aplikace je prázdný řetězec.

Databáze zadaná v parametru databaseEntryName není povolená pro oznámení o změnách.

Tabulka databáze zadaná v parametru tableName není povolená pro oznámení o změnách.

databaseEntryName je null.

-nebo-

tableName je null.

Příklady

Následující příklad kódu používá tento konstruktor k vytvoření instance SqlCacheDependency třídy, která je přidružena k databázové tabulce s názvem Categories v databázi SQL Server s názvem 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

Poznámky

Tento konstruktor se používá k vytváření SqlCacheDependency objektů pro produkty SQL Server 7.0 a SQL Server 2000.

Název databáze předaný parametru database musí být definován v souboru Web.config aplikace. Například následující Web.config soubor definuje databázi s názvem pubs pro SqlCacheDependency oznámení změn.

<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>

Při použití tohoto konstruktoru jsou obvykle vyvolány dvě výjimky: DatabaseNotEnabledForNotificationException a TableNotEnabledForNotificationException. DatabaseNotEnabledForNotificationException Pokud je vyvolán, můžete volat metodu SqlCacheDependencyAdmin.EnableNotifications v kódu zpracování výjimek nebo pomocí nástroje příkazového aspnet_regsql.exe řádku nastavit databázi pro oznámení. TableNotEnabledForNotificationException Pokud je vyvolán, můžete zavolat metodu SqlCacheDependencyAdmin.EnableTableForNotifications nebo použít aspnet_regsql.exe k nastavení tabulky pro oznámení.

Viz také

Platí pro