2010-03-30 112 views
0

我有一個3層應用程序,我需要獲取數據庫結果並填充UI。 我有一個MessagesCollection類處理消息。 我從數據庫加載我的用戶。在用戶的實例化(即新用戶())上,執行MessageCollectionMessage = new MessageCollection(this)。消息收集接受用戶作爲參數。通過集合訪問數據庫

User user = user.LoadUser("bob"); 

我想獲取Bob的消息。

user.Messages.GetUnreadMessages(); 

GetUnreadMessages調用我的業務數據提供者,後者又調用數據訪問層。業務數據提供者返回List。我的問題是 - 我不確定這裏最好的做法是什麼 - 如果我在MessagesCollection類的數組中有一組消息,我可以實現ICollection來提供GetEnumerator()和遍歷消息的能力。但是,如果消息更改並且用戶加載了舊消息,會發生什麼情況?

大消息收集呢?如果我的用戶有10,000條未讀郵件會怎麼樣?我不認爲訪問數據庫並返回10,000個消息對象會很有效。

回答

0

看起來,如果您在用戶之後單獨調用以加載消息,那麼您正在對數據庫進行2次往返。如果可能的話,我會考慮單次旅行並在單次旅行中加載帶有消息的用戶。就大量數據而言,您可能需要考慮某種分頁機制。用戶不可能理解單個視圖中的所有消息,因此一次顯示他們的頁面將是優選的。

該集合將能夠在內部跟蹤更改沒有問題(事件或其他)。您可以使用一些自定義事件或類似INotifyPropertyChanged接口的方式向您的實體公開更改。