【问题标题】:How to include navigation properties recursively如何递归地包含导航属性
【发布时间】:2012-06-06 16:13:34
【问题描述】:

我有 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)

然后,我在 Database1DbContextBar 中有实体 FooFooBarDatabase2DbContext

Foo 具有导航属性 ParentFoo 类型)、ChildrenICollection<Foo> 类型)和 BarBar 类型)。 FooBar 具有导航属性 FooFoo 类型)和 BarBar 类型)。

现在,我想要的是能够.Include(foo => foo.Bar),这样Bar 也为Foo 的所有ParentChildren 加载。

我希望我没有太混乱。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 很公平,但是如果不存在不同数据库的附加复杂性,我该怎么办?这真的是我的问题。
    • EF 不支持分层查询,因此您需要一个额外的列(类似于TreeId)通过正常查询加载整个单个层次结构及其所有嵌套节点,您可以在其中使用@987654322 @.
    • 谢谢。这说明了很多事情。
    猜你喜欢
    • 1970-01-01
    • 2013-07-11
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多