Определить, был ли вызван SqlDependency.Start (connectionstring) в текущем проекте? - PullRequest
1 голос
/ 23 января 2012

Наши приложения используют много общих компонентов.Некоторые из них не нуждаются в кэшировании, например, службы Windows, которые обрабатывают не отправленные по электронной почте письма.Вы никогда не кешируете этот результирующий набор ...

Проблема в том, что наш общий уровень данных был изменен для использования SqlCacheDependency, наши сервисы, которые не запускают SqlDependency, перестают работать при вызовах базы данных, когда уровень данных запрашиваетSqlCacheDependency объект.

Что приводит к вопросу - есть ли способ для наших классов данных проверить, прослушивает ли служба посредника (то есть: был ли вызван SqlDependency.Start (connectionString))?

Сам объект SqlDependency не имеет Enabled или подобного свойства.Есть ли способ заставить вызывающее приложение сообщить уровень данных, который SqlCaching использует для уровня данных для определения состояния?

Ответы [ 3 ]

2 голосов
/ 03 февраля 2012

В значительной степени ответ - нет. Мы закончили тем, что добавили переменную конфигурации, которая, если false или отсутствует, заставляет запрос использовать SqlCacheDependency, чтобы быть пропущенным.

1 голос
/ 25 мая 2013

SELECT * FROM sys.service_queues ГДЕ имя LIKE 'SqlQueryNotificationService -%'

возвращает 'SqlQueryNotificationService- [some guid]'

И если вы загляните в непубличные членыSqlDependency _serverUserHash при отладке в IDE вы найдете коллекцию, содержащую эту же запись.Если Microsoft так любезно это разоблачит, то да.

0 голосов
/ 11 ноября 2013

В моем случае у меня есть библиотека классов, которая используется некоторыми веб-приложениями.Так что у меня нет App.config.Я также использую SqlCacheDependency в статическом событии.Поэтому я использую статический логический тип, например:

if (!isCachingEnabled)
  isCachingEnabled = SqlDependency.Start(builder.ProviderConnectionString);

Пока работает, но я открыт для предложений при использовании библиотек классов.

...