通过集合访问数据库

时间:2010-03-30 23:16:31

标签: class collections data-access

我有一个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对象会很有效。

1 个答案:

答案 0 :(得分:0)

看来,如果您在用户之后单独调用加载消息,那么您需要两次往返数据库。如果可能的话,我会考虑单程旅行,并在一次旅行中加载带消息的用户。就大型数据集而言,您可能需要考虑某种分页机制。用户不可能理解单个视图中的所有消息,因此一次向它们显示页面将是优选的。

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