2011-10-24 7 views
0

私は最新のプロジェクトで自家製のリポジトリパターン(!)をPetaPocoと共に使用しています。そしてデータ検索ルーチンをコーディングするときに、私の脳は突然ジャンプしました。リポジトリパターンを使用しているときに単一オブジェクトを取得する方法は?

現在Repo.GetMyObjectsはdbからIList<MyObject>を返し、Repo.GetMyObjectMyObjectを返します。

これは正しい方法ですか?または、私はRepo.GetMyObjectsを返してIEnumerable<MyObject>を返してから、コントローラ内でRepo.GetMyObjects().SingleOrDefault(q => q.ID == MyWantedObjectID)を使用して1つのオブジェクトを取得する必要がありますか?

答えて

0

あなたのRepo.GetMyObjectを賭けて、あなたが説明したことをしましょう。将来必要に応じて実装を変更することができ、すべての呼び出し元は変更を必要としません。

0

MyObjectインスタンスのコレクション全体を取得することは愚かなことです(必要な場合のみ)。データベースに何千ものインスタンスがある場合、これがもたらすパフォーマンス・コストを考慮してください。

だから、あなたはあなたが興味を持っている唯一のオブジェクトを取得し、リポジトリ内GetMyObject方法を、必要があります

1

さらにはAnkurの答えよりも移動するには:あなたがやっている方法は、実際にはより正確ですSingleOrDefault()の呼び出しを追加する必要があるため、リポジトリがあなたのためにやっているはずのものだと思われます。

関連する問題