七. SQLNotificationEventArgs
當你看到通知的確從數(shù)據(jù)庫中傳來時,你可以分析一下相應(yīng)變量的值,它是一個SqlNotificationEventArgs對象。SqlDependency總是隨著OnChange事件返回這個對象,而且它是很有用的。其中,SqlNotificationInfo是一個具有18種可能值的枚舉類型。其中,一些值對應(yīng)情況正常,而另一些顯示出了問題。這些枚舉中有Update,Insert和Delete—告訴你在數(shù)據(jù)中發(fā)生了什么類型的變化。還有其它一些值即使在事件發(fā)生時也不會被發(fā)送。例如,重新啟動服務(wù)器將激發(fā)所有的通知;而枚舉值Drop或Truncate告訴你已經(jīng)對依賴的表實現(xiàn)了某種操作。
另外,還存在一些依賴性甚至還不能被注冊的情形,例如如果你試圖對一個UPDATE查詢設(shè)置一個依賴性將返回Invalid。而返回值Query顯示你的查詢語法并不符合通知的嚴格規(guī)則。上面枚舉表中的最后兩個枚舉值,還有其它幾個與不能注冊查詢相關(guān)的枚舉值在執(zhí)行該命令時被立即返回。
通過查找MSDN庫中的有關(guān)SqlNotificationInfo枚舉文檔,你可以得到這些枚舉的完全列表。
當我一些場合上談?wù)摬樵兺ㄖ獣r,人們總是問我:“通知是否會告訴你發(fā)生了什么事情?”;卮鹗恰安粫。
總之,SQLNotificationEventArgs能夠向你給出一個通知中最為詳細的信息,而這些信息在調(diào)試排錯時是非常有用的。