当某些表中的数据发生更改时,我正在使用 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();
}
它正在工作,但我有一些问题。
1)我没有找到一种方法来获取更改了哪一行的信息。我需要从整个表中读取所有数据,看看有什么不同。有没有办法获取这些信息?(主 ID 或其他东西)也许使用与 SqlDependency 不同的方法?
2)如果“某人”非常快地更改数据怎么办。可能有些更改不会被通知?(我担心通知和再次订阅之间的时间。
谢谢你。