我正在構建一個asp.net web應用程序(框架4),並希望開發一個持有基本客戶信息(客戶ID,電子郵件,電話,地址信息,客戶賬戶等)的類是 可通過訪問網站頁面,以便我沒有商店客戶ID某些地方(會話等),並撥打數據庫,每當我需要關於該客戶的一些信息。
當用戶登錄門戶並獲取他/她的基本信息並以類的形式存儲時,我只想調用一次數據庫。asp.net客戶信息類
任何人都可以告訴如何開發這種類型的fo類,以及在哪裏/如何存儲它以使其適用於所有頁面?
我正在構建一個asp.net web應用程序(框架4),並希望開發一個持有基本客戶信息(客戶ID,電子郵件,電話,地址信息,客戶賬戶等)的類是 可通過訪問網站頁面,以便我沒有商店客戶ID某些地方(會話等),並撥打數據庫,每當我需要關於該客戶的一些信息。
當用戶登錄門戶並獲取他/她的基本信息並以類的形式存儲時,我只想調用一次數據庫。asp.net客戶信息類
任何人都可以告訴如何開發這種類型的fo類,以及在哪裏/如何存儲它以使其適用於所有頁面?
一旦用戶成功登錄,向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
- 只是ViewState
取代Session
。
如果你想將其存儲在Cache
然後用
HttpContext.Current.Cache.Insert("customer" + customerId, customer, new CacheDependency("customer" + customerId), Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration);
,您可以訪問這樣的Cache
項目:
HttpContext.Current.Cache["customer" + customerID]
希望這有助於!
我認爲你誤解了類是如何工作的,特別是在持久性方面。主要的是,類是持久性 - 無知的。 HTTP協議本質上是無狀態的,所以一旦請求完成,你的類實例就會被銷燬。您需要在某個時刻使用Session(或其他持久性機制)來存儲您的客戶信息(即使它是一個類對象)。 –
ASP.NET頁面是無狀態的。全球信息需要存儲在某個地方。如果您正確使用會話,會話使用不錯。如果您想最小化Session中的內容,只需存儲用戶的ID(或您擁有的任何唯一標識符),以及何時需要有關該客戶的信息,請從數據庫中獲取。 –
我完全同意Brian的觀點,從你的問題看,你似乎缺少面向對象編程的工作原理。 – gideon