J'ai une application à 3 niveaux où j'ai besoin d'obtenir des résultats de base de données et peuplé l'interface utilisateur. J'ai une classe MessagesCollection qui traite les messages. Je charge mon utilisateur depuis la base de données. Sur l'instanciation d'un utilisateur (par exemple, new User()), un message MessageCollection Messages = new MessageCollection (this) est exécuté. La collection de messages accepte un utilisateur en tant que paramètre.Accès à la base de données via les collections
User user = user.LoadUser("bob");
Je veux recevoir les messages pour Bob.
user.Messages.GetUnreadMessages();
GetUnreadMessages appelle mon fournisseur de données d'affaires qui appelle à son tour la couche d'accès aux données. Le fournisseur de données métiers renvoie List. Ma question est - Je ne suis pas sûr de la meilleure pratique ici - Si j'ai une collection de messages dans un tableau à l'intérieur de la classe MessagesCollection, je pourrais implémenter ICollection pour fournir GetEnumerator() et la capacité de traverser les messages. Mais que se passe-t-il si les messages changent et que l'utilisateur a d'anciens messages chargés?
Qu'en est-il des grandes collections de messages? Que faire si mon utilisateur avait 10 000 messages non lus? Je ne pense pas que l'accès à la base de données et le retour de 10 000 objets Message seraient efficaces.