Entity Framework Core를 사용하면 관계형 데이터베이스를 사용할 때 원래 SQL 쿼리로 전환할 수 있습니다. 필요한 쿼리가 LINQ로 표현될 수 없을 때는 원시 SQL 쿼리를 사용할 수 있습니다. LINQ 쿼리를 사용하다 보면 비효율적인 SQL 쿼리를 사용할 수도 있습니다. 원시 SQL 쿼리는 모델 내에서 일반적인 엔티티 타입 또는 키리스 엔티티 타입을 반환할 수 있습니다.
요약: Entity Framework(EF)를 사용해 SQL 문과 저장 프로시저를 실행하기.
SQL 문장 쿼리, 업데이트, 삭제를 수행하고, 저장 프로시저와 뷰를 호출하는 방법은 다음과 같습니다:
- FromSqlRaw
- FromSqlInterpolated(FromSqlInterpolated)
- ExecuteSqlRaw
- ExecuteSqlInterpolated
FromSqlRaw와 FromSqlInterpolated는 주로 쿼리 작업에 사용됩니다 ExecuteSqlRaw와 ExecuteSqlInterpolated는 데이터베이스에 추가, 업데이트, 삭제 작업을 수행하고, 영향을 받은 행 수를 반환합니다
끝부분은 보간된 키워드로, 보통 매개변수 추가, 삭제, 수정 및 검사를 포함하며, 문자열 보간 구문을 이용한 SQL 주입 공격에 저항하는 방법입니다. 예를 들어:
SQL 문장을 출력하면, 쿼리 조건은 아래 그림과 같이 스플라이싱을 거치지 않습니다:
네이티브 SQL 쿼리를 사용할 때 주의해야 할 몇 가지 제한사항이 있습니다:
SQL 쿼리는 엔티티 타입의 모든 속성에 대한 데이터를 반환해야 합니다. 결과 집합의 열 이름은 속성이 매핑되는 열명과 일치해야 합니다. 이 동작은 EF6와는 다르다는 점에 유의하세요. EF6에서는 원래 SQL 쿼리의 속성/열 매핑 관계가 무시되며, 결과 집합의 컬럼 이름이 속성 이름과 일치해야 합니다. SQL 쿼리는 관련 데이터를 포함할 수 없습니다. 하지만 많은 경우, 쿼리 직후에 Include 메서드를 사용해 상관 데이터를 반환할 수 있습니다(연관 데이터 포함 참조).
(끝)
|