2011-05-12 94 views
4

我正在使用webmethod從數據庫&中提取數據,將其存儲在一個靜態變量中,以便下一次不會觸及數據庫,因爲數據正在被頻繁訪問。創建靜態變量似乎不是一個合適的解決方案什麼是這種情況的代名詞。在哪裏存儲數據,以避免數據庫擊中?

e.g

public static List<SupplierGridData> lstFullSupplierData; 

public static List<SupplierGridData> GetProductData() 
{ 
    if (lstFullSupplierData == null) 
    { 
     //first time get data from database 
     lstFullSupplierData = new List<SupplierGridData>(); 
     lstFullSupplierData = new POProcess().GetInquiryDetails(); 
    } 
    else 
    { 
     //use lstFullSupplierData which holds data 
    } 
} 

回答

1

以最簡單的解決方案,可以擊中分貝一次if(!this.IsPostBack)然後埋在頁面視圖狀態的東西,如果它沒有太多的東西(假設你不需要在其他頁面進行) 。否則,會話或緩存將按其他人的建議進行操作。

+1

我不能使用viewstate becoz我正在使用PageMethods即不支持視圖狀態的靜態方法 – Tuscan 2011-05-12 10:51:18