2013-10-21 131 views
0

我有一個具有多個頁面的Web應用程序。每個頁面都調用一個類方法從數據庫中獲取數據。其中一些調用是多餘的,這意味着我們多次向數據庫發出查詢以獲取相同的數據。我想查詢一次數據庫並將結果存儲在某個全局變量中,而不是會話中,以便頁面可以訪問這些變量。我已經嘗試過單例模式設計,但是它在創建對象時不接受參數。請幫助在asp.net中創建全局變量C#

+1

任何推理的事實,以避免會議? – Steve

+0

這似乎是使用會話的最佳時機? –

+2

這不是一個用例fir會話,因爲他沒有指出每個用戶的狀態變化 –

回答

3

使用Application.Cache來存儲結果,然後在多個頁面中訪問它。但請記住,此信息將由您網站的所有用戶共享。

DataTable dataTable = GetDataFromDatabase(); 
HttpContext.Current.Cache["CahcedTable"] = dataTable; 

要訪問:

DataTable dataTable = HttpContext.Current.Cache["CachedTable"] as DataTable; 
if(dataTable != null) 
{ 
    //your code e.g. gridView1.DataSource = dataTable; 
} 
+0

也如果你正在使用SQL Server,它可能啓用(如果它沒有默認啓用)在服務器端的查詢緩存,所以查詢結果將被緩存一段時間,並且在下一個* same *查詢中,不會執行IO,而是返回存儲在內存中的結果:更快。 – Tigran

0

使用一個靜態類,它(以及所有它的靜態屬性/域)將僅每applucation域(所以,除非你做了幾個非常有一次,具體thibgs,每個網站一次)