我正在构建一个asp.net Web应用程序(框架4),并希望开发一个类,其中包含基本的客户信息(客户ID,电子邮件,电话,地址信息,客户帐户等),应该是
可以通过网站页面进行访问,这样我就没有商店客户ID(会话等),并且每当我需要有关该客户的信息时都会调用DB。
当用户登录到门户网站并获取他/她的基本信息并以类的形式存储时,我想只调用一次DB。
任何人都可以告诉我们如何开发这类类型以及在何处/如何存储它以使其可用于所有页面?
答案 0 :(得分:0)
用户成功登录后,只需调用一次DB即可检索当前的Customer
对象并将其保存到Session
。不要只是认为你会滥用服务器的内存。该对象将少于500个字节,如果您有1000个实时会话,则它的服务器内存不到500 KB。
您也可以考虑Cache
键入User ID
并检索Customer
对象。
您也可以将Customer
对象保存到ViewState
,并且不会占用服务器上的任何内存。
从任意页面访问Session
\ Cache
\ ViewState
非常容易。
适用于Session
:
protected void Page_Load(object sender, EventArgs eventArgs)
{
Customer customer = Session["customer"] as Customer;
}
private void LoginSuccess(int customerID) {
Customer customer = _customerRepository.GetById(customerID);
Session["customer"] = customer;
}
**对于ViewState
,它与Session
相同 - 只需将Session
替换为ViewState
。
如果您想将其存储在Cache
中,请使用
HttpContext.Current.Cache.Insert("customer" + customerId, customer, new CacheDependency("customer" + customerId), Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration);
您可以像这样访问Cache
项:
HttpContext.Current.Cache["customer" + customerID]
希望这有帮助!