Sql Server with Service Broker

我现在正在使用 SqlDependency 来获取当数据表发生更改时的消息通知。

private void subscribeBroker()
{
    using (var conn = new SqlConnection(connString))
    {
        conn.Open();

        var cmd = new SqlCommand("SELECT text FROM dbo.Test");
        cmd.Connection = conn;

        var dependency = new SqlDependency(cmd);
        dependency.OnChange += dependency_OnChange;
        SqlDependency.Start(connString);

        cmd.ExecuteNonQuery();
    }
}

void dependency_OnChange(object sender, SqlNotificationEventArgs e)
{
    //Do something...
    subscribeBroker();
}

上面代码能够运行,但是有点小问题,
我不能找到一个方法能够使程序知道这个更改是发送在数据表的哪行数据,所以现在我必须读取全部的数据,然后进行比较。有办法直接在通知里面就获取到时哪行数据发生更改了吗,或者有没有别的方法来实现更改通知啊?

阅读 3k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进