쿼리 데이터
개요
Entity Framework Core를 사용하면 데이터베이스 명령을 명시적으로 실행 하지 않고도 애플리케이션 에서 데이터로 작업할 수 있습니다. 데이터를 쿼리 하려면 LINQ(Language-Integrated Query) 구문을 사용합니다. LINQ를 사용하면 C# 관련 키워드 및 연산자를 사용하여 강력한 형식의 쿼리를 쓰기 (write) 수 있습니다. 애플리케이션 을 실행 하면 EF Core Provider가 자동으로 LINQ 쿼리를 변환하고 MongoDB 쿼리 API 를 사용하여 데이터베이스 에서 실행합니다.
이 가이드 에서는 EF Core Provider를 사용하도록 구성된 애플리케이션 에서 일반적인 쿼리 작업의 예를 확인할 수 있습니다.
팁
EF 코어 제공자를 사용하도록 애플리케이션 을 구성하는 방법을 학습 보려면 EF 코어 제공자 구성을 참조하세요.
엔터티 찾기
FirstOrDefault()
메서드를 사용하여 단일 엔터티를 찾거나 Where()
메서드를 사용하여 여러 엔터티를 찾습니다.
단일 엔터티 찾기
FirstOrDefault()
메서드는 collection에서 검색 기준과 일치하는 첫 번째 엔터티를 반환하고, 일치하는 엔터티가 없으면 null
를 반환합니다.
다음 코드는 FirstOrDefault()
메서드를 사용하여 Planets
DBSet
에서 name
필드가 'mercury'인 행성을 찾아 콘솔에 행성 이름을 출력합니다.
var planet = db.Planets.FirstOrDefault(p => p.name == "Mercury"); Console.WriteLine(planet.name);
여러 엔터티 찾기
Where()
메서드를 사용하여 collection에서 여러 엔터티를 검색할 수 있습니다. Where()
은 검색 기준과 일치하는 모든 엔터티를 반환합니다.
다음 코드는 Where()
메서드를 사용하여 hasRings
필드가 true
로 설정된 모든 행성을 찾고 행성 이름을 콘솔에 출력합니다.
var planets = db.Planets.Where(p => p.hasRings); foreach (var p in planets) { Console.WriteLine(p.name); }
엔티티 정렬
OrderBy()
메서드를 사용하여 쿼리에서 엔터티를 반환할 순서를 지정합니다. OrderBy()
지정된 정렬 기준에 따라 요소를 오름차순으로 정렬합니다.
다음 코드는 OrderBy()
메서드를 사용하여 모든 행성을 찾아 orderFromSun
필드 값을 기준으로 오름차순으로 정렬합니다. 그런 다음 결과를 콘솔에 인쇄합니다.
var planetList = db.Planets.OrderBy(p => p.orderFromSun); foreach (var p in planetList) { Console.WriteLine(p.name); }
Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune
팁
내림차순 정렬
OrderByDescending()
메서드를 사용하여 쿼리 결과를 내림차순으로 정렬할 수 있습니다.
ThenBy()
메서드를 사용하여 쿼리를 2차 정렬할 수 있습니다. ThenBy()
메서드는 지정된 정렬 기준에 따라 OrderBy()
메서드의 결과를 오름차순으로 정렬합니다. ThenBy()
메서드는 OrderBy()
메서드에 연결되어야 합니다.
팁
내림차순으로 2차 정렬
ThenByDescending()
메서드를 사용하여 내림차순으로 2차 정렬을 수행할 수 있습니다.
다음 코드에서는 OrderBy()
및 ThenBy()
메서드를 사용하여 모든 행성을 찾아 hasRings()
필드를 기준으로 정렬하고, name
필드에서 2차 정렬을 수행합니다.
var planetList = db.Planets.OrderBy(o => o.hasRings).ThenBy(o => o.name); foreach (var p in planetList) { Console.WriteLine("Has rings: " + p.hasRings + ", Name: " + p.name); }
Has rings: False, Name: Earth Has rings: False, Name: Mars Has rings: False, Name: Mercury Has rings: False, Name: Venus Has rings: True, Name: Jupiter Has rings: True, Name: Neptune Has rings: True, Name: Saturn Has rings: True, Name: Uranus
팁
부울 값이 있는 필드를 정렬할 때 필드 값이 false
인 엔터티가 값이 true
인 엔터티보다 먼저 표시됩니다.
추가 정보
이 가이드에 설명된 메서드에 대해 자세히 알아보려면 다음 .NET API 문서 링크를 참조하세요.