2010-11-16 73 views
2

我使用ObjectDataSource(除非它是不可能這樣做)使用綁定所有GridViewsDetailViews等我的網頁上。最近,我開始以編程方式綁定我的所有控件。我覺得這更清潔,更容易,但有些人可能會不同意。用ObjectDataSource綁定以編程方式綁定VS.對象數據源的性能

顯然有它的優點和缺點,如由於編程這樣做。

說我結合一個GridView編程(例如GridView1.DataSource = SomeList),當我改變在GridView上頁,我必須也代碼這一點。每次頁面更改時,我必須再次撥打GridView1.DataSource = SomeList。顯然,用ObjectDataSource我不需要這樣做。我通常堅持我SomeList對象到ViewState中,所以當我改變頁面,我不需要每一次都擊中數據庫。

我的問題是:這是ObjectDataSource控件是如何工作的?它是否將其數據存儲在ViewState中,除非調用.Select方法,否則不會再次訪問數據庫?我喜歡嘗試從我的應用程序中獲得最佳性能,並儘可能少地訪問數據庫,但我並不喜歡在ViewState中存儲大量列表的想法。有沒有更好的方法來做到這一點?緩存每個用戶一個好主意(或可能)?每次我只需要打開數據庫,而不是將我的巨大列表存儲在ViewState中?點擊數據庫比使用ViewState有時更好嗎?

回答

1

是否將數據存儲在ViewState中,並且不會再次點擊數據庫,除非您調用.Select方法?

沒有它不是數據在ViewState中保存。在視圖狀態gridview和其他類似的列表中,保存一般狀態,例如排序列,頁面,總頁面,控制狀態,但不保存數據。

是每個用戶的緩存是一個好主意

緩存每在服務器端用戶不是除非緩存是最後幾分鐘,僅或/和數據好主意,你去緩存是非常小的。如果你爲每個用戶長時間緩存大量數據,如果用戶開始閱讀大量頁面,那麼它們會變得非常特別,最後你會遇到同樣的問題。

現在你必須表現出大量數據是來自多個表的關係,那麼也許是更好的緩存表,以「一代平表」的全面關係。

難道我只是每次打到數據庫而不是將我的巨大列表存儲在ViewState中?

這也取決於從你如何快速設計你的數據的讀取。對我來說,最好是保持ViewState較小,並且只保留在頁面上執行操作所需的信息,而不是數據。

相關問題