0

각각 2 개의 데이터베이스가 있고 각각은 해당 EntityFramework DB 컨텍스트가 있으며 Entity Framework 5, 코드 우선을 사용하고 있습니다.탐색 속성을 재귀 적으로 포함하는 방법

Table  : Foo (resides in database 1) 
-- Column : Id (is primary key) 
-- Column : ParentId (is foreign key into Foo) 
-- Column : BarId (is foreign key into Bar) 

Table  : FooBar (resides in database 1) 
-- Column : Id (is primary key) 
-- Column : FooId (is foreign key into Foo) 
-- Column : BarId 

Table  : Bar (resides in database 2) 
-- Column : Id (primary key) 

그런 다음, 나는 실체 Foo, Database1DbContext에서 FooBarDatabase2DbContext에서 Bar 있습니다

나는 테이블은 다음과 닮은 있습니다.

FooChildren 및 (유형의 Bar) Bar (유형의 ICollection<Foo>) Parent (Foo 형의) 탐색 특성을 갖는다. FooBar에는 Foo (유형이 Foo) 및 Bar (유형이 Bar)의 탐색 속성이 있습니다.

자, 내가 원하는 Bar가 아니라 Foo의 모든 ParentChildren 위해로드되도록, .Include(foo => foo.Bar) 할 수있을 것입니다.

나는 너무 혼란스럽지 않았 으면 좋겠다.

추신 : 다른 데이터베이스에 있기 때문에 내비게이션 속성 Bar을 설정하는 데 문제가 있다는 것을 알고 있습니다. 보기 또는 동의어를 제안하는 몇 가지 관련 답변에서 제안을 보았습니다. 그 상황을 고려한 답변도 크게 환영 할 것입니다.

답변

2

불가능합니다. 교차 컨텍스트 쿼리를 만들거나 컨텍스트 열망/지연로드를 교차 할 수 없습니다. 필요한 모든 Foo 및 FooBars에 대해 Bar 인스턴스를로드해야합니다.

+0

다른 데이터베이스의 추가 된 복잡성이 없다면 어떻게 할 수 있습니까? 그것은 정말로 제 질문입니다. –

+1

EF는 계층 적 쿼리를 지원하지 않으므로'Include'를 사용할 수있는 일반적인 쿼리로 모든 중첩 노드와 함께 전체 단일 계층 구조를로드하려면 추가 열 (예 : TreeId)이 필요합니다. –

+0

감사합니다. 그것은 많은 것을 명확히합니다. –