SqlCacheDependency Конструкторы

Определение

Инициализирует новый экземпляр класса SqlCacheDependency.

Перегрузки

Имя Описание
SqlCacheDependency(SqlCommand)

Инициализирует новый экземпляр класса, используя предоставленный SqlCacheDependency для создания зависимости ключей SqlCommand кэша.

SqlCacheDependency(String, String)

Инициализирует новый экземпляр SqlCacheDependency класса, используя предоставленные параметры для создания зависимости кэш-ключа.

SqlCacheDependency(SqlCommand)

Инициализирует новый экземпляр класса, используя предоставленный SqlCacheDependency для создания зависимости ключей SqlCommand кэша.

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)

Параметры

sqlCmd
SqlCommand

Объект SqlCommand , используемый SqlCacheDependency для создания объекта.

Исключения

Параметр sqlCmd имеет значение null.

Экземпляр SqlCommand имеет значение свойства NotificationAutoEnlisttrue и на странице имеется @ OutputCache директива с заданным атрибутом SqlDependencyCommandNotification.

Комментарии

Этот конструктор используется для создания объектов SqlCacheDependency, использующих функцию уведомления о запросах продуктов SQL Server 2005.

Инструкции SQL, связанные с параметром sqlCmd , должны содержать следующие компоненты:

  • Полные имена таблиц, включая имя владельца таблицы. Например, чтобы ссылаться на таблицу с именем Customers, принадлежащую владельцу базы данных, инструкция SQL должна ссылаться на dbo.customers.

  • Явные имена столбцов в инструкции Select. Не удается использовать подстановочный знак звездочки (*) для выбора всех столбцов из таблицы. Например, вместо этого select * from dbo.customersнеобходимо использовать select name, address, city, state from dbo.customers.

Этот конструктор нельзя использовать для связывания экземпляра SqlCommand с экземпляром SqlCacheDependency на странице с помощью уведомлений запросов SQL Server 2005 с кэшированием выходных данных на уровне страницы.

См. также раздел

Применяется к

SqlCacheDependency(String, String)

Инициализирует новый экземпляр SqlCacheDependency класса, используя предоставленные параметры для создания зависимости кэш-ключа.

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)

Параметры

databaseEntryName
String

Имя базы данных, определенной в элементе баз данных Web.config файла приложения.

tableName
String

Имя таблицы базы данных, SqlCacheDependency связанной с ней.

Исключения

Внутренняя проверка SqlClientPermission сбоя.

–или–

Не databaseEntryName найдено в списке баз данных, настроенных для уведомлений на основе таблиц.

–или–

Объект SqlCacheDependency не удалось подключиться к базе данных во время инициализации.

–или–

Объект SqlCacheDependency столкнулся с ошибкой, отказано в разрешении либо в базе данных, либо в хранимых процедурах базы данных, поддерживающих SqlCacheDependency объект.

Параметр tableName имеет значение Empty.

Опрос не включен для SqlCacheDependencyпараметра .

–или–

Интервал опроса неправильно настроен.

–или–

В файле конфигурации приложения не было указано строка подключения.

–или–

Не удалось найти строка подключения, указанные в файле конфигурации приложения.

–или–

Connection string, указанный в файле конфигурации приложения, является пустой строкой.

База данных, указанная в параметре, databaseEntryName не включена для уведомлений об изменениях.

Таблица базы данных, указанная в параметре, tableName не включена для уведомлений об изменениях.

databaseEntryName равно null.

–или–

tableName равно null.

Примеры

В следующем примере кода этот конструктор используется для создания экземпляра класса SqlCacheDependency, связанного с таблицей базы данных с именем "Категории" в базе данных SQL Server с именем 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

Комментарии

Этот конструктор используется для создания объектов SqlCacheDependency для SQL Server 7.0 и SQL Server 2000 продуктов.

Имя базы данных, переданное database параметру, должно быть определено в файле Web.config приложения. Например, следующий файл Web.config определяет базу данных с именем pubs для SqlCacheDependency уведомлений об изменениях.

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

При использовании этого конструктора часто возникают два исключения: DatabaseNotEnabledForNotificationException и TableNotEnabledForNotificationException. DatabaseNotEnabledForNotificationException Если возникает ошибка, можно вызвать SqlCacheDependencyAdmin.EnableNotifications метод в коде обработки исключений или использовать aspnet_regsql.exe средство командной строки для настройки базы данных для уведомлений. TableNotEnabledForNotificationException Если возникает ошибка, можно вызвать SqlCacheDependencyAdmin.EnableTableForNotifications метод или использовать aspnet_regsql.exe для настройки таблицы для уведомлений.

См. также раздел

Применяется к