实体框架 4 加载并包含组合

本文关键字:包含 组合 加载 框架 实体 | 更新日期: 2023-09-27 18:37:14

如果我有 3 个表:

表 1、表

2、表 3

表 3 有一个 FK 表示表

2,表 1 有一个 FK

然后我像这样加载我的对象:

using(Entities entities = new Entities()
{
     Table1 table = entities.Table1.FirstOrDefault();
     table.Table2.Load();
}

我怎样才能急切地将表3加载到表2,因为延迟加载已关闭。

我知道我可以在 FirstOrDefault 语句中使用 Include,但它会生成一个太大的连接。

using(Entities entities = new Entities())
{
    Table1 table = entities.Table1.FirstOrDefault();
    var table2 = table.Table2.CreateSourceQuery().Include("Table3")
        .Execute(MergeOption.AppendOnly);
    table.Table2.Attach(table2);
}

实体框架 4 加载并包含组合

我怎样才能急切地将表 3 加载到表 2 中,因为延迟加载是 关掉。

您可以尝试:

using(Entities entities = new Entities())
{
    Table1 table = entities.Table1.FirstOrDefault();
    table.Table2.CreateSourceQuery().Include("Table3")
        .Execute(MergeOption.AppendOnly);
}

我假设您使用的是派生自EntityObject的实体,而不是 POCO,即 table.Table2EntityCollection<T>EntityReference<T>。我不是 100% 确定上面的代码是否会按预期工作。