SQL Server数据库更改监听器 C#

22
我希望能够从C#监听SQL Server数据库中数据的更改。我希望有一种监听器来确定我的数据是否过时,但是尽管这是一个相当常见的场景,我却找不到除了轮询数据库之外的解决方案。
我使用Linq-To-SQL访问数据,因此有一个DataContext对象,我希望能够监听数据更改事件,但似乎找不到该事件。
我知道这是一个不小的障碍(从C#方法到SQL Server DB),但我期望这是一个已解决的问题,因为它是GUI的常见需求。如果无法监听更新,则如何使由SQL Server数据源支持的GUI中的数据保持最新?
虽然这不是用于GUI工作,但我希望从那个领域中适应某些东西。
是否有一种方式可以在C#中订阅SQL Server数据库更改事件?
5个回答

7

7
你需要寻找SqlDependency,该类允许你监听SQL查询结果集的更改。

3

DataContext在SQL Server中不提供任何类型的监听功能。您最好创建一个轮询应用程序,或者甚至创建一个单独的线程定期轮询数据库以查看更改,并公开一个事件,以便您的主应用程序可以监听。


1

0
我会在数据库中使用一个只有一行的表来记录最近更新、插入或删除的事件,然后在每个重要的表上创建触发器来更新这个表,并轮询这个表以获取更改。

这对于快速变化的数据库是行不通的,因为您需要不断监视表格,更糟糕的是,在检查之间没有保证不会跳过更改。 - PedroC88

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接