개발/ASP.NET

[WebApp/MVC] EF Core와 LINQ를 사용하여 데이터 가져오기

향포레스트 2023. 10. 30. 18:27
728x90

MVC : Cotroller

public class ProjectController : Controller
{
     private readonly MyDBContext _context;

     public ProjectController(MyDBContext context, IConfiguration configuration) 
     {
         _context = context;
     }
}

Entity의 모든 데이터 가져오기

var project = _context.BackgroundProjects.ToList();

Entity의 모든 데이터 가져오기 - 검색 필터

var toyproject = _context.BackgroundProjects.Where(p => project == "TOY").ToList();

1개 Entity 가져오기

var project =  _context.BackgroundProjects.FirstOrDefault(p => p.ProjectId == projectId);

JOIN

INNER JOIN

var skillQuery = (from mapping in _context.BackgroundProjectSkillMappings
                  join skills in _context.BackgroundTechnicalSkills
                  on mapping.SkilId equals skills.SkilId
                  where mapping.ProjectId == projectId
                  orderby mapping.SortOrder
                  select new
                  {
                      mapping.ProjectId,
                      mapping.SortOrder,
                      skills.SkilIname
                  });

var skill = skillQuery.ToList();

💡단순 검색 조건을 넣을 때

var query = from photo in context.Set<PersonPhoto>()
            join person in context.Set<Person>()
                on new { Id = (int?)photo.PersonPhotoId, photo.Caption }
                equals new { Id = person.PhotoId, Caption = "SN" }
            select new { person, photo };

LEFT JOIN

var query = from b in context.Set<Blog>()
            join p in context.Set<Post>()
                on b.BlogId equals p.BlogId into grouping
            from p in grouping.DefaultIfEmpty()
            select new { b, p };

참고 자료
LINQ :
https://learn.microsoft.com/ko-kr/ef/core/querying/
복합 쿼리 :
https://learn.microsoft.com/ko-kr/ef/core/querying/complex-query-operators

728x90