如何實作金鑰為基礎的相依性藉由使用 Visual Basic.NET 資料快取在 ASP.NET 中

文章翻譯 文章翻譯
文章編號: 312358 - 檢視此文章適用的產品。
本文已封存。本文係以「現狀」提供且不會再更新。
全部展開 | 全部摺疊

在此頁中

結論

使用本指南將逐步實作金鑰為基礎的 ASP.NET 應用程式中的資料快取相依性。

本範例建立並將插入快取中的 DataSet 物件,用在另一個快取項目項目上設定藉由參考它的索引鍵相依性。如需詳細資訊,以及範例的資料快取的檔案以時間為主或相依性,請參閱本文中的 REFERENCES 一節]。

Back to the top

需求

下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
  • Microsoft Windows 2000 或 Microsoft Windows XP。
  • Microsoft 網際網路資訊服務 (IIS)。
  • Microsoft.NET 架構。
  • Microsoft SQL Server。
Back to the top

使用 Visual Basic.NET 建立 ASP.NET Web 應用程式

下列程序會建立新的 ASP.NET Web 應用程式,名為 DataCacher
  1. 啟動 Microsoft Visual Studio.NET。
  2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
  3. 新增專案] 對話方塊中,在 [專案類型,按一下 [Visual Basic 專案]。在 [範本 下, 按一下 [ASP.NET Web 應用程式]。
  4. 在 [位置] 方塊取代 WebApplication # 為新專案名稱: DataCacher。如果您使用本機伺服器,將伺服器名稱保留為 http://localhost。[位置] 方塊中看起來類似這樣:
    http://localhost/DataCacher
Back to the top

建置 Web 表單

附註如需詳細資訊請參閱本文稍後 「 執行程式碼 」 一節]。
  1. 新增至您的專案在 Visual Studio.NET 命名 DataCacheSample.aspx 的新 WebForm。要這麼做,請您執行下列步驟:
    1. 以滑鼠右鍵按一下專案節點,在 [方案總管] 中,指向 [新增],然後再按一下 [加入新 WebForm
    2. 命名 [WebForm DataCacheSample.aspx,然後按一下 [開啟舊檔
  2. 在 Visual Studio.NET 整合式的開發環境 (IDE) 以切換到 [設計] 檢視。
  3. 將 WebForm 按鈕加入至頁面:
    1. 拖曳到頁面 WebForm 按鈕。
    2. 選取 [WebForm] 按鈕。將 [識別碼] 屬性變更為 CreateNewOrCached,並將 文字 屬性變更為 快建立新 Or 取
  4. 新增第二個 WebForm 按鈕:
    1. 拖曳 [到此頁上的 [另一個 WebForm 按鈕,並放置 CreateNewOrCached 按鈕之後。
    2. 選取 WebForm 按鈕,將 [識別碼] 屬性變更為 RemoveEntry,並 RemoveEntry 來變更 Text 屬性。
  5. 新增 WebForm 標籤:
    1. 工具箱 中拖曳到頁面 WebForm 標籤。
    2. 選取 WebForm] 標籤,並將 [識別碼] 屬性變更為 CacheStatus,然後再清除 Text 屬性。
  6. 新增一個 DataGrid:
    1. 拖曳到頁面 WebForm DataGrid 控制項。保持預設識別碼屬性的 DataGrid1
Back to the top

加入程式碼

加入程式碼,以插入移除快取項目,與建置快取相依性快取項目:
  1. 用滑鼠右鍵按一下.aspx] 網頁,然後按一下 [檢視程式碼 以顯示程式碼。
  2. 將下列命名空間加入至命名空間清單:
    Imports System.Data.SqlClient
    Imports System.Web.Caching
    						
    附註 如果省略命名空間,或如果您的命名空間的多餘清單將會收到警告訊息。
  3. 切換至 [設計] 檢視。
  4. 連按兩下 CreateNewOrCached 按鈕來顯示 CreateNewOrCached_Click 事件的程式碼。將下列程式碼加入至 CreateNewOrCached_Click 事件。

    附註這個程式碼需要您安裝 SQL Server Pubs 資料庫。
         Private Sub CreateNewOrCached_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CreateNewOrCached.Click
            ' Create a DataSet object from the cache entry with the
            ' CacheDataSetEmployees key.
            Dim CacheDataSetEmployees As Object = CType(Cache.Get("CacheDataSetEmployees"), DataSet)
    
            ' Verify if the object is null.
            If (CacheDataSetEmployees Is Nothing) Then
    
                ' Set a value for the cache entry that serves as the 
                ' key for the dependency.
                Cache("SqlPubsEmployees") = "SomeValue"
    
                ' Create the array of cache key item names.
                Dim keys() As String = {"SqlPubsEmployees"}
    
    
                Dim ds As DataSet = New DataSet()
                ' Create the connection and pass in the ConnectionString.
                Dim MySqlConn As SqlConnection = New SqlConnection("Server=localhost;Database=Pubs;uid=sa;pwd=")
                ' Create the Data Adapter and pass the command text and 
                ' connection to use.
                Dim MySda As SqlDataAdapter = New SqlDataAdapter("SELECT TOP 10 * FROM Employee", MySqlConn)
                ' Populate the DataTable "Employees" in the DataSet.
                MySda.Fill(ds, "Employee")
                ' Set the DataGrid's DataSource to the "Employee" DataTable.
                DataGrid1.DataSource = ds.Tables("Employee")
    
                ' Create a dependency object referencing the array of cache 
                ' keys (keys).
                Dim MyDependency As New CacheDependency(Nothing, keys)
    
                ' Insert the DataSet into Cache with a dependency on 
                ' MyDependency
                Cache.Insert("CacheDataSetEmployees", ds, MyDependency)
                MySqlConn.Close()
    
                ' Display the status of the DataSet/Cache Entry.
                CacheStatus.Text = "New Version Created"
    
    
            Else
    
                ' Display the status of the DataSet/Cache Entry.
                CacheStatus.Text = "Cached Version Used"
                ' Set the DataSource to the cached version of the DataSet.
                DataGrid1.DataSource = CacheDataSetEmployees
            End If
    
            ' Bind the DataGrid to the DataSource.
            DataGrid1.DataBind()
    
        End Sub
    						
    筆記 修改 ConnectionString 上述程式碼中與 SQL 伺服器正常運作。
  5. 切換回至 [設計] 檢視中 [DataCacheSample.aspx 頁面。
  6. 連按兩下 RemoveEntry 按鈕來顯示 RemoveEntry_Click 事件程式碼。
  7. 將下列程式碼加入至 RemoveEntry_Click 事件:
    Private Sub RemoveEntry_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RemoveEntry.Click
            ' Remove the cache item listed in the CacheKeys array (keys).
            Cache.Remove("SqlPubsEmployees")
    
            ' Display the status of the cache item.
            CacheStatus.Text = "Cache Item Removed"
    End Sub
    					
  8. 在 [檔案] 功能表上按一下 [全部儲存] 以儲存 [WebForm 和其他相關的專案檔案。
  9. 建置專案: 在 Visual Studio.NET IDE 中 [建置] 功能表中上, 按一下 [建置方案]。
Back to the top

執行程式碼

  1. 在 [方案總管] 在 DataCacheSample.aspx 頁面上按一下滑鼠右鍵,然後按一下 [在瀏覽器中的檢視
  2. 按一下 [CreateNewOrCached] 按鈕。CacheStatus 標籤會顯示 新版本建立,並填入 DataGrid 控制項。

    附註
    • 由於 CacheDataSetEmployees 快取索引鍵未參考有效的快取項目,當您輸入事件時,便會出現 新的版本建立CacheStatus 標籤的設定。在這種情況下建立 資料集DataGrid 控制項繫結至 資料集資料集,會利用 CacheDataSetEmployees 快取索引鍵輸入到快取。
    • 建立新的 CacheDependency 物件名為 MyDependency。加入至快取藉由 插入 方法時,MyDependency 物件會列出為 CacheDataSetEmployees 項目的相依性。雖然這個範例會示範金鑰為基礎的依存性,也可以使用其他類型的相依性架構快取條件,例如檔案或時間戳記。
  3. 再按一次 CreateNewOrCached 按鈕。

    請注意 CacheStatus 標籤會顯示 [快取版本使用。這表示使用的快取的 資料集。確認這是快取的資料,請使用 SQL 查詢分析器或另一種工具來修改其中一項 Pubs 資料庫中顯示的記錄。修改資料錄之後再按一下 [CreateNewOrCached] 按鈕。請注意不顯示您所做的變更。 按一下 RemoveEntry,然後按一下 [CreateNewOrCached 再次以查看對資料庫所做的變更。
  4. 按一下 [RemoveEntry] 按鈕。

    請注意 CacheStatus 標籤會顯示 [快取項目已移除]。快取項目具有 SqlPubsEmployees 索引鍵中移除利用 Cache.Remove 方法 RemoveEntry_Click 事件中。當建立時都會列出 MyDependency 陣列,包含已移除的項目快取索引鍵名稱。CacheDataSetEmployees 項目會被移除,因為它透過使用 Insert 方法和參考 MyDependency 在其相依性參數所建立。
  5. 請再按一下 CreateNewOrCached

    請注意 CacheStatus 標籤會顯示 [建立新的版本。based 在的它不再存在於快取當事件引發時,會建立資料集。

    而且,請注意 DataGrid 控制項中會顯示如填入資料,即使 資料集 項目會從快取中移除。這是因為 EnableViewState 屬性依預設設定為 True。這會維護控制項的狀態並沒有關聯到快取項目操作,在程式碼中。更多的圖形化表示控制項的狀態在每個階段,設定 EnableViewState為 False
在真實世界情況中快取索引鍵陣列 (在這個範例,金鑰 陣列) 可能保留快取索引鍵的其他資料表或其他快取項目。 如果其中一個那些項目變更,然後快取 (在這個範例中,CacheDataSetEmployees) 的項目項目建立的是從快取中移除此相依性。如果您必須可以反應透過回呼。回呼的更多有關,請參閱本文稍後之 < 參考 > 一節。

Back to the top

疑難排解

  • 快取索引鍵陣列中所列的機碼名稱必須與實際的快取項目相關聯。如果不是使用相依性項目將不保留在快取中正確--,例如如果索引鍵陣列範例程式碼中的保存另一個陣列項目且項目設定為 [無效的快取索引鍵名稱。
  • 快取索引鍵陣列有沒有特定的意義,直到使用與 CacheDependency 物件。
  • 如果項目插入快取與沒有相依性或其他到期然後執行階段控制項決定何時從快取移除項目。
Back to the top

?考

CacheItemRemovedCallback 有關請造訪下列 Microsoft 網站]:
CacheItemRemovedCallback 委派
http://msdn2.microsoft.com/en-us/library/system.web.caching.cacheitemremovedcallback(vs.71).aspx
附註CacheItemRemovedCallback 定義回呼方法來通知應用程式,從快取移除快取的項目時。

CacheDependency 類別資訊請造訪下列 Microsoft 網站]:
CacheDependency 類別
http://msdn2.microsoft.com/en-us/library/system.web.caching.cachedependency(vs.71).aspx
CacheDependency 類別追蹤快取相依性例如檔案、 資料夾或應用程式的快取中的其他物件的關鍵。

為不同的快取選項可以使用 ASP.NET 的簡短概觀,請造訪下列 Microsoft 網站]:
將項目加入至快取
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaddingitemstocache.asp
如需詳細資訊按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中 「 文件:
305140資訊: ASP.NET 藍圖
307225ASP.NET 快取概觀
Back to the top

屬性

文章編號: 312358 - 上次校閱: 2014年2月24日 - 版次: 4.5
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
關鍵字:?
kbnosurvey kbarchive kbmt kbcaching kbdatabase kbhowtomaster KB312358 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:312358
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com