수색…


LINQ 쿼리를 SQL 쿼리로 변환

개발자는 IQueryableIQueryable<T> 인터페이스를 사용하여 LINQ 쿼리 ( '언어 통합'쿼리)를 특정 데이터 소스 (예 : 관계형 데이터베이스)로 변환 할 수 있습니다. C #으로 작성된이 LINQ 쿼리를 가져옵니다.

var query = from book in books
            where book.Author == "Stephen King" 
            select book;

변수 booksIQueryable<Book> 을 구현하는 유형 인 경우 위의 쿼리는 코드 구조를 반영하는 데이터 구조 인 표현식 트리 형태로 공급자 ( IQueryable.Provider 속성에 설정 됨)에 전달됩니다. .

공급자는 런타임에 표현식 트리를 검사하여 다음을 결정할 수 있습니다.

  • Book 클래스의 Author 속성에 대한 술어가있다.
  • 사용 된 비교 방법은 'equals'( == )입니다.
  • 그것이 평등해야하는 가치는 "Stephen King" 입니다.

이 정보를 사용하면 공급자는 런타임에 C # 쿼리를 SQL 쿼리로 변환하고 해당 쿼리를 관계형 데이터베이스에 전달하여 조건 자와 일치하는 해당 책만 가져올 수 있습니다.

select *
from Books
where Author = 'Stephen King'

query 변수가 반복 될 때 공급자가 호출됩니다 ( IQueryableIEnumerable 구현 함).

이 예제에서 사용 된 공급자는 쿼리 할 테이블을 알고 C # 클래스의 속성을 테이블의 열과 일치시키는 방법을 알기 위해 몇 가지 추가 메타 데이터가 필요하지만 이러한 메타 데이터는 IQueryable 인터페이스의 범위 밖에 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow