Во-первых, вы не можете использовать собственную очередь и службу, если у вас запущено более одного экземпляра приложения WPF.Инфраструктура SqlDependency работает для каждого домена приложения, и если вы совместно используете очередь, экземпляры (домены приложения) будут красть уведомления друг у друга, что приведет к погрешности во время выполнения.Если вы не знаете точно , что вы делаете, просто используйте реализацию по умолчанию (развернутая служба / очередь / процедура):
Сообщение об ошибке довольно ясно: 'При использовании SqlDependency без указания значения параметра yada yada yada '.Таким образом, вы не предоставляете options
значение , поэтому используется значение по умолчанию:
Параметры запроса уведомления, которые будут использоваться этой зависимостью. null для использования службы по умолчанию .
В то же время вы перезаписываете службу по умолчанию в вызове .Start()
.Как я уже сказал, лучше сначала поработайте с делом по умолчанию, пока вы не будете уверены, что понимаете, что происходит, прежде чем приступить к настраиваемому поведению, отличному от заданного по умолчанию, особенно с чем-то таким сложным, как Таинственное уведомление .
Посмотрите LinqToCache , чтобы узнать, как использовать Query Notification с LINQ.Статья Кэширование LINQ Queries на основе SqlDependency объясняет, как эта интеграция работает с LinqToSQL и LinqToEF, а также почему вы не можете использовать ее с EF, если задействован LINQ.