0

我有一个 3 层应用程序,我需要在其中获取数据库结果并填充 UI。我有一个处理消息的 MessagesCollection 类。我从数据库加载我的用户。在用户实例化时(即 new User()),执行 MessageCollection Messages = new MessageCollection(this)。消息集合接受用户作为参数。

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

我想收到给 Bob 的消息。

 user.Messages.GetUnreadMessages();

GetUnreadMessages 调用我的业务数据提供者,后者又调用数据访问层。业务数据提供者返回列表。

我的问题是 - 我不确定这里的最佳实践是什么 - 如果我在 MessagesCollection 类的数组中有一组消息,我可以实现 ICollection 以提供 GetEnumerator() 和遍历消息的能力。但是如果消息发生变化并且用户加载了旧消息会发生什么?

大消息集合呢?如果我的用户有 10,000 条未读消息怎么办?我不认为访问数据库并返回 10,000 个 Message 对象会很有效。

4

1 回答 1

0

看来,如果您在用户之后单独调用以加载消息,那么您将进行 2 次往返数据库。如果可能的话,我会考虑一次旅行并在一次旅行中为用户加载消息。对于大型数据集,您可能需要考虑某种分页机制。用户不可能在一个视图中理解所有消息,因此最好一次显示一个页面。

该集合将能够在内部跟踪更改没有问题(事件或其他)。您可以使用某些自定义事件或 INotifyPropertyChanged 接口之类的东西将更改公开给您的实体。

于 2010-03-31T11:50:14.753 回答