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