C# 检测数据库查询更新

C# 检测数据库查询更新,c#,sql,sql-server,database,wcf,C#,Sql,Sql Server,Database,Wcf,情况如下: 客户端A和客户端B都已登录到应用程序 客户端A和客户端B已填充其gridview(显示上载的文件) 客户端A将文件上载到数据库 客户端B必须检测到添加了数据(客户端a上载的文件),然后重新填充gridview 我需要知道第4步的工作流程。我阅读了有关使用SqlDependency的内容,并阅读了这篇文章 但是,如果我没有记错的话,本文将使用SQL Server 2008中不推荐使用的Notification Services。我还想知道当检测到数据库中的查询结果发生变化时,如何在客户

情况如下:

  • 客户端A和客户端B都已登录到应用程序
  • 客户端A和客户端B已填充其gridview(显示上载的文件)
  • 客户端A将文件上载到数据库
  • 客户端B必须检测到添加了数据(客户端a上载的文件),然后重新填充gridview
  • 我需要知道第4步的工作流程。我阅读了有关使用
    SqlDependency
    的内容,并阅读了这篇文章
    但是,如果我没有记错的话,本文将使用SQL Server 2008中不推荐使用的Notification Services。我还想知道当检测到数据库中的查询结果发生变化时,如何在客户端注册代码。谢谢

    已编辑

    目前的选项有SqlDependency、trigger、WCF、Observer模式。如果有人知道这些解决方案中是否有人可以/无法在我的场景中实现,请随时发表评论并让我知道。

    您可以在应用层中执行此操作。 您可以使用集中式方法/类来更新数据库中的文件。 然后,您可以注册观察者(观察者模式)以获得任何更新的通知。 这样,当数据库中的数据更改时,您可以刷新多个客户端


    只有在其他流程或直接数据库更新没有数据更改的情况下,上述建议才有效。

    您错了,本文不使用通知服务。 本文使用了以下内容:

    • 在上面有一个客户端调用的web服务(WCF双工通道); 客户机有一个回调,当数据发生变化时调用该回调; 这也可以用于数据库轮询;另一方面,文章 使用更先进的技术对数据更改作出反应
    • 在底层数据访问层,AppServer使用普通ADO.Net连接 使用SqlDependency;使用此技术,订阅者会附加一个事件 数据更改时将被触发;然后服务器将立即发送 将更新的数据发送到客户端
    • 在数据库端本身,SQLServerServiceBroker由SqlDependency使用 在内部避免投票;如果您知道如何操作,您可以自己手动执行此操作 操纵ServiceBroker对象

    因此,这些技术都没有使用不推荐的通知服务。您需要启动的所有内容(即使您使用的是SQL Server 2012)都在那篇文章中进行了描述。

    您是否有一个示例来演示您所描述的方式?谢谢,实际上你们可以在互联网上阅读观察者模式。但是为了保持简单,暂时忽略它,硬编码应该在DAO或服务中得到通知的对象,它将更新DB表。我仍然有点困惑。假设客户机A更新数据库中的文件并注册观察员,那么客户机B如何知道观察员正在注册?感谢您的帮助或澄清