asp/mvc에서 2 개의 저장소의 데이터를 결합하는 데 관한 질문이 있습니다.2 개의 저장소에서 데이터를 결합하는 방법
저는 UserRepo와 InvoiceRepo와 같은 2 개의 저장소가 있습니다.
이제 사용자 데이터와 송장 데이터 (예 : 주소 및 마지막 인보이스의 데이터를 가진 모든 사용자)이 포함 된 쿼리를 만들고 싶습니다.
가장 좋은 방법은 무엇입니까?
asp/mvc에서 2 개의 저장소의 데이터를 결합하는 데 관한 질문이 있습니다.2 개의 저장소에서 데이터를 결합하는 방법
저는 UserRepo와 InvoiceRepo와 같은 2 개의 저장소가 있습니다.
이제 사용자 데이터와 송장 데이터 (예 : 주소 및 마지막 인보이스의 데이터를 가진 모든 사용자)이 포함 된 쿼리를 만들고 싶습니다.
가장 좋은 방법은 무엇입니까?
한 번 통화하면 왜해야하나요?
var users = userRepos.GetUsers();
var lastInvoices = invoiceRepos.GetLastInvoiceForAllUsers();
var usersWithInvoices = (from x in users
select new UserWithInvoice(x, lastInvoices.First(inv => inv.userId = x.Id);
두 개의 SELECT가 될 것이므로 이해하기 쉬워야합니다.
조인을 수행하고 필요한 모든 데이터를 반환하는 방법으로 기존 리포지토리 (아마도 InvoiceRepo
)를 확장 할 수 있습니다.
InvoiceRepo.GetUserInvoices(userId)
은 현명한 선택처럼 들립니다.
이것은 리포지토리 패턴의 일반적인 문제입니다. 즉, 방법에 대한 적절한 repo를 찾는 것입니다.
구현에 따라 db의 전체 테이블을로드 할 수 있습니다. 페이징이 필요한 경우 까다로울 것입니다 (문제는 언급되지 않았습니다). –
페이징이 필요하면'int [] userId'를'GetLastInvoiceForUsers' – jgauffin