Entity Framework 및 Composite 기본 키를 사용할 때 간단한 포함 () 쿼리가 더 복잡해집니다. 이 기사는이 문제를 해결하는 다양한 방법에 대해 설명합니다.
직접 조인에 대한 복합 기본 키 값을 나타내는 튜플을 사용하거나 엔티티 프레임 워크에서 작동 실패를 포함합니다. 튜플 이이 맥락에서 원래 값으로 간주되지 않기 때문에 이러한 작업은 SQL로 변환 될 수 없기 때문입니다.
또 다른 방법은 AsEnumerable ()을 사용하여 데이터베이스 테이블 데이터를 메모리로 추출하고 LINQ를 사용하여 필요한 필터링을 수행하는 것입니다. 그러나 큰 테이블의 경우이 솔루션은 매우 비효율적입니다.
각 복합 기본 키 구성 요소에 대해 별도의 contains () 문을 사용하면 필터링이 잘못되었습니다. 이 접근법은 하나의 매칭 구성 요소 만 포함 된 엔티티에 실수로 포함되기 때문에 오해의 소지가있는 결과를 낳을 수 있습니다.
Composite 기본 키 구성 요소 (예 : entity.id1 * entity.id2)에서 파생 된 계산 된 값이 포함 된 수정 된 포함 () 쿼리를 사용할 수 있습니다. 그러나이 솔루션은 찾을 수 없으며 성능 저하로 이어집니다.
가장 확장 가능한 방법은 포함 및 메모리 연결을 결합하는 것입니다. 이 메소드는 예비 포함 () 쿼리를 사용하여 결과 세트를 좁히고 메모리 연결을 통해보다 정확하게 개선합니다.
LinqKit과 같은 예비 빌더는 각 복합 기본 키 값 조합에 대한 쿼리 또는 조항을 제작할 수 있습니다. 이 방법은 작은 목록에 대해 작동하지만 큰 목록의 경우 성능이 저하됩니다.
또 다른 방법은 Union을 사용하여 각 복합 기본 키 값을 결합하는 여러 쿼리를 결합하는 것입니다. 이 솔루션은 중소형 목록에서 작동 할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3