日期:2014-05-17  浏览次数:21137 次

SqlDependency 的 HasChanges 属性如何使用?
使用 SqlDependency 的 HasChanges 属性来确定自从首次检索数据以来查询结果是否已经更改,但是为甚我调用这个属性一直返回的false值(即使在数据库中插入了值)。有没有具体代码参考

------解决方案--------------------
你对照一下MSDN上的说明,看步骤是否跟Ta一致
------解决方案--------------------
1、msdn不就有示例代码吗,你的代码要是和msdn一致,那说明你是不是有某些配置是不是忽略了
2、在msdn上有下面这样一段安全注意事项,你看看跟这些是不是有关系
依赖项基础结构依赖于 SqlConnection,它会在调用 Start 时打开,以便接收有关给定命令的基础数据已经更改的通知。客户端启动对 SqlDependency.Start 的调用的能力是通过使用 SqlClientPermission 和代码访问安全性属性来控制的。有关更多信息,请参见启用查询通知 (ADO.NET)和代码访问安全性和 ADO.NET。

------解决方案--------------------
使用SqlDependency技术需注意三点:
1)数据库需要打开Broker服务;
2)绑定监听结果集中不能使用*号,需要明确指定监听列;
3)SQL文中From后面的表一定要有所有者(还是Schema空间,搞不懂),比如Select Name From dbo.Student(不一定是dbo,要依据DBA的指定)

OnChange 在关联命令的结果更改时发生。如果您没有使用 OnChange,可检查 HasChanges 属性以确定查询结果是否已更改。

OnChange 事件不一定意味着数据发生了更改。在其他情况下,如超时时间已过和设置通知请求失败,也会生成 OnChange。
------解决方案--------------------
因为你没有正确的配置好数据库的监听服务,所以haschanges的值没有正确获得.
这个文章参考一下
http://hi.baidu.com/wozouhou/item/752096a8fdb81c8915107335