我使用SqlDependency在某些表中的數據發生更改時獲取通知。SQLDependency + Service Broker
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)如果「某人」更改數據速度很快。有可能某些更改不會被通知? (我擔心的通知,當我再次訂閱它的時間之間的時間。
謝謝。如果你想獲得什麼
關於1,如果您需要行信息,是否有阻止您從簡單地請求除了文本以外的ID? – tmesser
不知道這應該如何幫助。比方說,測試表有樹行。當第二行被修改時,會引發dependency_OnChange,並且SqlCommand將返回沒有關於變化信息的樹行。 – Chatumbabub