[UseApplicationDbContext]
[UsePaging]
[UseProjection]
[UseFiltering]
public IQueryable<UserType> GetUsers(
[ScopedService] ApplicationDbContext dbContext,
[Service] IMapper mapper)
{
return mapper.ProjectTo<UserType>(
dbContext.Users.AsNoTracking());
}
해당 코드에서
users(first:4){
edges{
node{
id
company{
companyName
}
}
}
이렇게 쿼리를 날리면
SELECT `t`.`Id`, `c`.`Id` IS NOT NULL, `c`.`CompanyName`
FROM (
SELECT `a`.`Id`
FROM `AspNetUsers` AS `a`
LIMIT @__p_0
) AS `t`
LEFT JOIN `Companies` AS `c` ON `t`.`Id` = `c`.`UserId`
이렇게 자동으로 company를 Join 해주더라고요.
그렇다면 굳이 companyDataLoader를 사용할 필요 없어 보이는데... 사용하지 않아도 성능 상 문제가 없을까요?
그렇다면 이렇게 Projection으로 테이블을 join하면 굳이 Dataloader를 아이 만들 필요 없을까요?