首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测数据库查询更新

检测数据库查询更新
EN

Stack Overflow用户
提问于 2013-07-21 10:25:26
回答 2查看 918关注 0票数 1

设想情况如下:

  1. 客户端A和客户端B都登录到应用程序中。
  2. 客户端A和客户端B填充了它们的网格视图(显示上传的文件)。
  3. 客户端A将文件上载到数据库。
  4. 客户端B必须检测到所添加的数据(客户端A上传的文件)并再次填充网格视图。

我需要知道第4步起作用的流程。我读过关于使用SqlDependency的文章,并看过本文http://rusanu.com/2007/11/01/remove-pooling-for-data-changes-from-a-wcf-front-end/

但是,如果我没有错,本文使用的是Server 2008中不推荐的Notification。当检测到数据库中的查询结果发生变化时,我还想知道如何在客户机中注册代码。谢谢

编辑的

当前的选项是SqlDependency、触发器、WCF、观察者模式。如果有人知道这些解决方案中是否有人可以/不能在我的场景中实现,请随时评论并通知我。

EN

回答 2

Stack Overflow用户

发布于 2013-07-21 11:01:37

您可以在应用层中这样做。您可以有一个集中化方法/类来更新数据库中的文件。然后,您可以注册观察者(观察者模式)以获得任何更新的通知。这样,当数据库中的数据发生变化时,可以刷新多个客户端。

只有在没有来自其他进程的数据更改或直接DB更新的情况下,上述建议才能起作用。

票数 2
EN

Stack Overflow用户

发布于 2013-07-21 13:08:08

您错了,文章不使用Notification。该条中使用了以下几个字:

  • 最上面是客户端调用的web服务(WCF双工通道);客户端有一个回调,当数据发生变化时调用该回调;这也可以与数据库轮询一起使用;另一方面,本文使用更高级的技术对数据更改作出反应。
  • 在底层的数据访问层中,app服务器使用普通的ADO.Net连接来使用SqlDependency;使用这种技术,订阅者附加一个事件,当数据被更改时会被触发;然后服务器将立即将更新的数据发送到客户端。
  • 在数据库端,由SqlDependency内部使用,以避免轮询;如果您知道如何操作Service对象,您可以手动完成此操作

因此,这些技术都没有使用废弃的Notification。您需要启动的所有内容(即使您使用的是Server 2012)都将在本文中描述。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17771331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档