我正在使用webmethod从数据库获取数据&将它存储在一个静态变量中,这样下次它就不会经常访问数据库becoz。创建静态变量似乎不是一个正确的解决方案,这对于这种情况来说是一种不适应。
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
}
}
答案 0 :(得分:6)
你想要的是缓存:
http://msdn.microsoft.com/en-us/library/xsbfdd8c.aspx
更具体地说,缓存数据:
http://msdn.microsoft.com/en-us/library/6hbbsfk6.aspx
还有会话状态:
http://msdn.microsoft.com/en-us/library/ms972429.aspx
这是以每个应用程序和每个用户的形式出现的。您还可以更改会话状态的后备存储。
答案 1 :(得分:1)
对此最简单的解决方案可能是命中一次if(!this.IsPostBack)
然后将这些东西埋在页面的视图状态中,如果它不是太多东西(假设你不需要携带其他页面)。否则会话或缓存将像其他人建议的那样。
答案 2 :(得分:0)
您需要将数据存储在会话中,以便不再次访问数据库。