Ну, у меня есть 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
, где я запрашиваю все необходимые данные в одном запросе?
Любая помощь очень ценится.
В этом случае я должен пойти с прежним решением, где я снова и снова запрашиваю базу данных для комментариев, Я имею в виду, не будет ли это неэффективно в случае больших объемов данных? Разве нет проблемы с этой проблемой? – Aneeq
В вашем репозитории вы должны иметь такие методы, как GetComments, , поэтому CommentsCount вы можете вызвать метод GetComments на уровне сервиса и получить счет с .Count()? Вы не должны делать метод в репозитории, который подготовит для вас viewModel. – waterdev