データベースの結果を取得してUIにデータを入力する必要がある3層のアプリケーションがあります。メッセージを処理するMessagesCollectionクラスがあります。データベースからユーザーをロードします。ユーザーのインスタンス化(つまり、new User())で、MessageCollection Messages = new MessageCollection(this)が実行されます。メッセージコレクションは、ユーザーをパラメーターとして受け入れます。
User user = user.LoadUser("bob");
ボブへのメッセージを受け取りたいです。
user.Messages.GetUnreadMessages();
GetUnreadMessagesは、データアクセス層を呼び出すビジネスデータプロバイダーを呼び出します。ビジネスデータプロバイダーはリストを返します。
私の質問は-ここでのベストプラクティスがわからない-MessagesCollectionクラス内の配列にメッセージのコレクションがある場合、ICollectionを実装してGetEnumerator()とメッセージをトラバースする機能を提供できます。しかし、メッセージが変更され、ユーザーが古いメッセージをロードした場合はどうなりますか?
ビッグメッセージコレクションはどうですか?ユーザーに10,000件の未読メッセージがある場合はどうなりますか?データベースにアクセスして10,000個のメッセージオブジェクトを返すのは効率的ではないと思います。