我有一个3层应用程序,我需要获取数据库结果并填充UI。 我有一个处理消息的MessagesCollection类。 我从数据库加载我的用户。在用户的实例化(即,新User())上,执行MessageCollection Messages = new MessageCollection(this)。消息集合接受用户作为参数。
User user = user.LoadUser("bob");
我想收到Bob的消息。
user.Messages.GetUnreadMessages();
GetUnreadMessages调用我的业务数据提供程序,后者又调用数据访问层。业务数据提供程序返回List。
我的问题是 - 我不确定这里的最佳实践是什么 - 如果我在MessagesCollection类中的数组中有一组消息,我可以实现ICollection以提供GetEnumerator()和遍历消息的能力。但是如果消息发生变化并且用户加载旧消息会发生什么?
大消息集合怎么样?如果我的用户有10,000条未读消息怎么办?我不认为访问数据库并返回10,000个Message对象会很有效。
答案 0 :(得分:0)
看来,如果您在用户之后单独调用加载消息,那么您需要两次往返数据库。如果可能的话,我会考虑单程旅行,并在一次旅行中加载带消息的用户。就大型数据集而言,您可能需要考虑某种分页机制。用户不可能理解单个视图中的所有消息,因此一次向它们显示页面将是优选的。
该集合将能够在内部跟踪更改没有问题(事件或其他)。您可以使用某些自定义事件或类似INotifyPropertyChanged接口的方式向实体公开更改。