음,이 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
과 함께 새 리포지토리 메서드를 작성해야합니까?
도움이 매우 감사합니다.
그런 경우 필자는 CommentsCount, FeedbacksCount 등을 위해 데이터베이스를 여러 번 쿼리하는 이전 솔루션을 사용해야 만합니까? 많은 양의 데이터가있는 경우 비효율적이지 않습니까? 이 문제를 해결할만한 방법이 있습니까? – Aneeq
저장소에 GetComments, 과 같은 메소드가 있어야합니다. 따라서 CommentsCount 서비스 레이어에서 GetComments 메소드를 호출하고 .Count()를 사용하여 카운트 할 수 있습니까? viewModel을 준비하는 저장소에서 실제로 메소드를 작성하지 않아야합니다. – waterdev