2015-02-06 41 views
2

我有一個使用SQLDependency監視的SELECT查詢。一切工作正常,但我想臨時掛起依賴關係,而我更新了查詢正在監視的數據集,我知道將從數據庫中觸發更改通知。暫時更新sqldependency通知

目前我設置了一個標誌,標誌着我正在進行更新,讓依賴項觸發,然後我重置它,以便我可以繼續監視查詢。

必須有一個更優雅的方式來做到這一點。

+0

您是否可以不停止偵聽器並在更新後啓動它? – 2015-02-06 08:30:55

回答

0

請注意使用SqlDependency類 - 它有內存泄漏problems。 Hovewer,你可以使用SqlDependency類的開源實現 - SqlDependencyEx。它使用數據庫觸發器和本機Service Broker通知來接收有關表更改的事件。這是一個使用示例:

int changesReceived = 0; 
using (SqlDependencyEx sqlDependency = new SqlDependencyEx(
      TEST_CONNECTION_STRING, TEST_DATABASE_NAME, TEST_TABLE_NAME)) 
{ 
    sqlDependency.TableChanged += (o, e) => changesReceived++; 
    sqlDependency.Start(); 

    // Make table changes. 
    MakeTableInsertDeleteChanges(changesCount); 

    // Wait a little bit to receive all changes. 
    Thread.Sleep(1000); 
} 

Assert.AreEqual(changesCount, changesReceived); 

隨着SqlDependecyEx您可以監視插入和刪除,避免了更新。希望這可以幫助。