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; } 
} 

В настоящее время моего уровня сервиса отображение связывания моделей БД моделей и передачи их в хранилище. Теперь мой вопрос в том, где я должен запрашивать данные дополнительные (данные для просмотра)? Должен ли я писать отдельные методы репозитория для CommentsCount, FeedbacksCount, ViewsCount и т. Д. И вызывать их со своего уровня обслуживания для подготовки моей модели представления или написать новый метод репозитория с типом возвращаемого значения BookViewModel, где я запрашиваю все необходимые данные в одном запросе?

Любая помощь очень ценится.

ответ

0

Методы репозитория должны отображать и возвращать или возвращать DTO, слой DAL не должен знать о проекте MVC, он должен знать только о DTO.

+0

В этом случае я должен пойти с прежним решением, где я снова и снова запрашиваю базу данных для комментариев, Я имею в виду, не будет ли это неэффективно в случае больших объемов данных? Разве нет проблемы с этой проблемой? – Aneeq

+0

В вашем репозитории вы должны иметь такие методы, как GetComments, , поэтому CommentsCount вы можете вызвать метод GetComments на уровне сервиса и получить счет с .Count()? Вы не должны делать метод в репозитории, который подготовит для вас viewModel. – waterdev

Смежные вопросы