이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 35720|회답: 2

[출처] EF에서 Expression<Func<T, bool>>과 Func<T, bool>의 차이점

[링크 복사]
게시됨 2021. 9. 26. 오전 9:21:21 | | | |
Func<TObject, bool>는 대의원입니다

Expression<Func<TObject, bool>>는 표현식입니다

컴파일 후 Expression은 실행 전에 delegate가 됩니다. 예를 들면

Expression<Func<int, bool>> ex = x=>x < 100;

Func<int, bool> func = ex. 컴파일();

그다음 func를 다음과 같이 부를 수 있습니다:

func(5) //-참으로 반환합니다

func(200) //- false를 반환합니다

표현식은 직접 호출할 수 없습니다.

경우:잘못된 쿼리 코드는 데이터베이스 전체 테이블 쿼리를 유발합니다

오류 코드는 다음과 같습니다:

Count 메서드의 인자로 Func 타입의 변수를 전달합니다.EF는 전체 테이블의 모든 데이터를 조회하고 메모리에서 필터링합니다。 생성된 SQL 문장은 다음과 같습니다:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      실행된 DbCommand (8ms) [매개변수=[], CommandType='Text', CommandTimeout='30']
      [c]를 선택하세요. [id], [c]. [client_type], [c]. [상태], [c]. [세입자]
      [표] AS [c]
정확한 코드는 다음과 같습니다:

올바른 작성은 데이터베이스에서 where 조건을 추가한 후 카운트 값을 직접 반환합니다。 생성된 SQL 문장은 다음과 같습니다:

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      실행된 DbCommand (4ms) [매개변수=[], CommandType='Text', CommandTimeout='30']
      셀렉트 카운트(*)
      [표] AS [c]
      여기서 [c]. [client_type] = 1


EF 코어 시리즈 4는 생성된 SQL 문들을 살펴봅니다
https://www.itsvse.com/thread-9564-1-1.html
ef는 생성된 SQL 문장을 표시합니다
https://www.itsvse.com/thread-3813-1-1.html

Func 대리자 호출을 사용하는 것은 다음과 같습니다System.Linq.Enumerable아래 카운트

Expression<Func<T, bool>>로 호출되는 표현은 다음과 같습니다System.Linq.쿼리 가능아래 카운트



(끝)





이전의:[연습] Java JDK Windows의 녹색 노 설치 버전 만들어
다음:자바는 Alibaba Cloud SMS SDK를 통해 SMS 인증 코드를 전송합니다
게시됨 2021. 9. 26. 오후 4:19:52 |
박식한
게시됨 2021. 9. 26. 오후 5:31:25 |
네, 다시 배우러 왔어요...
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com