저장 프로시저를 사용하여서는 엔티티 프레임워크를 어떻게 얻은 엔터티를 탐색 속성을 채웁니까?
-
10-07-2019 - |
문제
엔티티 프레임워크가 cripplingly 느린 그래서 나는 시도를 사용하여 저장된 절차만으로 이 문제를 해결합니다.
엔티티 프레임워크를 정의하는 저장 프로시저를 생산하는 entity.그러나 나의 엔티티는'탐색 속성'하지 않은 채워지고 있는 이 방법을 사용하는 경우.
가 있습니까?
해결책
잘 저장된 절차는 합리적이지 않습니다. 따라서 SPROC를 호출하고 EF가 포함 () 또는 무언가를 사용하여 동일한 쿼리에서 관계를 자동으로 채우도록하는 방법이 없습니다.
따라서 제품과 카테고리가 있다고 가정 해 봅시다
그리고 당신은 제품을 얻을 수있는 스프로크가 있습니다.
즉
var products = context.GetProducts(someproductfilter);
결과 제품에는 카테고리가로드되지 않습니다.
그러나 상기 제품의 범주를 얻는 두 번째 저장 절차가있는 경우 다음과 같습니다.
즉
var categories = context.GetCategoriesForProducts(someproductfilter);
두 번째 엔터티가 컨텍스트에 들어가면 관련 엔티티를 연결하는 EF의 기능은 두 호출이 이루어지면 두 가지 제품의 각 제품에 널이 아닌 범주가 있는지 확인합니다.
둘 이상의 쿼리를하고 있기 때문에 이것은 이상적이지 않지만 작동합니다.
대안은 사용하는 것입니다 efextensions. 이 쓴 사람은 한 번에 더 많은 데이터를로드하는 스프로스를 작성하는 능력을 만들었습니다.
도움이 되었기를 바랍니다
Alex를 건배합니다
다른 팁
이렇게 질문을 연구할 때 저장된 절차(SPs)EF.나도 같은 사람들@KristianNissen 및@Todilo 요청이 있는 경우 업데이트와 함께 EF6.
대답은 예,EF6 가 변경된 것,그러나 그것은 아무것도 추가하지 불러 도움을 탐색 속성을 사용할 때 SPs.도 사용할 수 있습니다.포함한다()메소드와 함께 SPs 로에게 물어 이 그래서 질문.
유일한 방법으로 작성하는 것이 SP 하여 탐색 속성입니다.그러나 거기는 지금 몇 가지 좋은 Microsoft 설명서에 사용 SPs-보 쿼리 SP 고 SP 반환 여러한 결과는 세트.
에 대한 완전성을 변경하는 EF 버전 6 에서 가져왔었을 허용하는 절차를 저장(SPs)를 핸들 삽입 업데이트 및 삭제한조 Microsoft 문서 고 엔티티 프레임 워크 Tutotial.