2015-11-26 5 views
1

Я использую EF 6 с SQL Server 2012.SqlDependency не работает

Я пытаюсь использовать SqlDependency, чтобы обновить свои данные в кэше, в библиотеке классов (DLL).

У меня есть следующее, основанное на каких-либо руководствах, которые я нашел, но похоже, что он не работает, и я не получаю ошибок.

  • включены брокерское обслуживание на дб
  • создало очередь брокера и услуги

Использование sa входа.

Я тестирую все это с помощью кода модульного тестирования, не уверен, возможно, уведомление не мгновенное, моя точка останова в SqlDependency.OnChange никогда не срабатывала.

Но даже если я намеренно замедляю пост-изменения, OnChange все еще не срабатывает.

Как только я сделал соответствующие изменения данных, как я могу знать, что SQL Server генерирует уведомление в db?

Update:

Изначально я нашел "шифрования мастер-ключ необходим" в журнале SQL. Создав этот ключ, журнал больше не выполнялся, но OnChange по-прежнему не запускается.

ответ

1

После многих испытаний и на основании 1 важной статье: http://www.codeproject.com/Articles/12335/Using-SqlDependency-for-data-change-events

1) После SqlDependency инициализации необходимо выполнить SqlCommand, может просто вызвать только sqlCmd.ExecuteNonQuery().

2) После того, как срабатывает OnChange событие, необходимо удалить обработку событий, воссоздать новый SqlCommand и SqlDependency, пересвязать обработки событий, и следовать правилу # 1