SqlDependency不起作用

时间:2015-11-26 10:34:53

标签: sql-server entity-framework-6 sqldependency

我在SQL Server 2012中使用EF 6。

我正在尝试使用SqlDependency刷新类库(DLL)中的缓存数据。

根据我发现的任何指南,我有以下内容,但似乎无效,我没有错误。

  • 在db上启用代理服务
  • 创建了代理队列和服务

使用sa登录。

我正在通过单元测试代码测试这一切,不确定通知是不是即时的,SqlDependency.OnChange中的断点从未触发过。

但即使我故意减慢更改后的内容,OnChange仍未触发。

一旦我进行了相关的数据更改,我怎么知道SQL Server在db中生成通知?

更新

最初我在SQL日志中发现“需要主密钥加密”。通过创建该密钥,日志不再发生,但仍未触发OnChange

1 个答案:

答案 0 :(得分:1)

经过多次试验,并基于1篇重要文章: http://www.codeproject.com/Articles/12335/Using-SqlDependency-for-data-change-events

1)初始化SqlDependency后,必须执行SqlCommand,可以简单地调用sqlCmd.ExecuteNonQuery()。

2)触发OnChange事件后,必须删除事件处理,重新创建新的SqlCommand和SqlDependency,重新绑定事件处理,并遵循规则#1