0

まあ、私はこのDBモデル「ブック」マッピングの作業はどこで行う必要がありますか?リポジトリまたはサービス層?

public class Book { 
    public int Id { get; set; } 
    public string Title { get; set; } 
    public string Author { get; set; } 
    public bool IsSubmitted { get; set; } 
    public bool IsCompleted { get; set; } 
    public bool IsDeleted { get; set; } 
}  

を持っていると私GetBook(int id)方法は、次のようになりますBook戻り、私は、リポジトリのパターンを実装している:へ

しかし
public Book GetBook(int id) { 
    return db.Books.Find(id); 
} 

、私のBookViewModelニーズを他にもいくつか質問します。

public class BookViewModel 
{ 
    public int Id { get; set; } 
    public string Title { get; set; } 
    public string AuthorName { get; set; } 
    public int CommentsCount { get; set; } 
    public int FeedbacksCount { get; set; } 
    public int ViewsCount { get; set; } 
} 

現在、私のサービス層は、モデルをDBモデルにマッピングし、リポジトリに渡しています。 私の質問は、この追加(ビュー固有)のデータをどこに問い合わせるべきかということです。 CommentsCount, FeedbacksCount, ViewsCountなどの別個のリポジトリメソッドを記述し、ビューモデルを作成するために自分のサービスレイヤから呼び出す必要がありますか?戻り値タイプBookViewModelを持つ新しいリポジトリメソッドを作成する必要がありますか?

ご協力いただきまして誠にありがとうございます。

答えて

0

リポジトリ方法はDAL層は、MVCプロジェクトについて知るべきではない、それが唯一のDTOの知っておくべき、DTOのをマッピングして返すかrecive必要があります。その場合

+0

、私はCommentsCount、FeedbacksCountなどのために何度も何度もデータベースを照会元の溶液で行くべき?大量のデータがある場合は非効率的ではありませんか?この問題の回避策はありませんか? – Aneeq

+0

あなたのリポジトリには、GetComments、 のようなメソッドがあるはずです。CommentsCountサービスレイヤでGetCommentsメソッドを呼び出し、.Count()でカウントを取得できますか? あなたのためにviewModelを準備するリポジトリのメソッドを実際に作成すべきではありません。 – waterdev

関連する問題