如何递归地包含导航属性

时间:2012-06-06 16:13:34

标签: foreign-key-relationship navigation-properties entity-framework-5

我有2个数据库,每个数据库都有相应的EntityFramework DB Context,我使用的是Entity Framework 5,Code-First。

我有类似以下的表格:

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中的实体FooBarDatabase1DbContextBar中的Database2DbContext

Foo的导航属性Parent(类型为Foo),Children(类型为ICollection<Foo>)和Bar(类型为{ {1}})。 Bar的导航属性FooBar(类型为Foo)和Foo(类型为Bar)。

现在,我想要的是能够Bar,以便为.Include(foo => foo.Bar)的所有BarParent加载Children同样。

我希望我不会太困惑。

PS:我知道设置Foo导航属性会出现问题,因为它位于不同的数据库中。我在一些相关的答案中看到了建议,无论是观点还是同义词。任何答案也会考虑到我的情况,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

这是不可能的。您无法进行跨上下文查询或跨上下文切换/延迟加载。您必须为所有必需的Foo和FooBars加载Bar实例。