您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何快速上手.NET 2.0 Sql Dependency,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
以SQL Server 2005上實現(xiàn)為準,SQL Server 2000因為實現(xiàn)機制不同,請查閱相關(guān)資料。
步驟一:在SQL Server 2005上執(zhí)行ALTER DATABASE <DatabaseName> SET ENABLE_BROKER;語句讓相應(yīng)的數(shù)據(jù)庫啟用監(jiān)聽服務(wù),以便支持SqlDependency特性。
這條語句最好在數(shù)據(jù)庫未執(zhí)行任何事務(wù)的情況下執(zhí)行。
步驟二:調(diào)用SqlDependency.Start(String strConnectionString)方法,在應(yīng)用程序端啟用依賴監(jiān)聽器。
該方法的參數(shù)為一個數(shù)據(jù)庫的連接字符串,該數(shù)據(jù)庫必須已經(jīng)執(zhí)行過步驟一的操作。
對于同一連接字符串,若已經(jīng)執(zhí)行過該語句,再次執(zhí)行不會發(fā)生任何異常,但返回值會為False.
如果是在Web程序中使用,建議可以將該語句放在Application_Start事件中執(zhí)行。
監(jiān)聽是基于數(shù)據(jù)庫的,而依賴才可以基于表或者查詢。
步驟三:該步驟分別有兩種不同的做法。該階段必須注意步驟。
方法A:建立連接對象,再創(chuàng)建一個SqlCommand實例,創(chuàng)建SqlCacheDependency實例,在這步之后再調(diào)用Command對象來獲取數(shù)據(jù)(這個順序很重要)。之后調(diào)用Cache的Insert語句建立一個依賴于一個具體查詢數(shù)據(jù)集的Cache項。
SqlConnection conn = new SqlConnection(strConnection);
SqlCommand command = new SqlCommand(strCommandText, conn);
SqlCacheDependency dependency = new SqlCacheDependency(command);
// 注冊方法到委托,該委托是
CacheItemRemovedCallback onRemove = new CacheItemRemovedCallback(RemovedCallback);
// 新增或修改一條緩存記錄
Cache.Insert(strCacheKey, objAppCache, dependency, absoluteExpiration, slidingExpiration, CacheItemPriority.Default, onRemove);
方法B:建立連接對象,再創(chuàng)建一個SqlCommand實例,最后創(chuàng)建SqlDependency實例。定義SqlDependency的委托OnChange,當數(shù)據(jù)發(fā)生改變時做出相應(yīng)的處理(比如清除Cache)。
SqlConnection conn = new SqlConnection(strConnection);
SqlCommand command = new SqlCommand(strCommandText, conn);
SqlCacheDependency dependency = new SqlCacheDependency(command);
dependency.OnChange += new OnChangeEventHandler(Dependency_OnChange);
注意事項:
不知道是不是還存在BUG,我在項目開發(fā)中遇到一些奇怪的現(xiàn)象。同樣的代碼,在有的機器上運行則能捕捉到變化,有的則完全沒反應(yīng);也有時會出現(xiàn)Cache剛建立就反復(fù)發(fā)生依賴改變的事件。偶爾Cache還會數(shù)據(jù)發(fā)生變化卻不引發(fā)事件。
但從最終項目實施的情況看,似乎都只是某些機器環(huán)境造成的不確定因素?這個無法確定。不過起碼數(shù)據(jù)庫端是否正常啟用,可以通過SQL Server Profiler來查看監(jiān)視。
上述內(nèi)容就是如何快速上手.NET 2.0 Sql Dependency,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。