3

如果我有 3 张桌子:

表 1、表 2、表 3

并且 Table3 对 Table2 有一个 FK,它对 Table1 有一个 FK

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

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

由于 LazyLoading 已关闭,我如何急切地将 table3 加载到 table2。

我知道我可以在 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

1 回答 1

3

由于 LazyLoading 已关闭,我如何急切地将 table3 加载到 table2。

你可以试试:

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

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

于 2012-06-13T13:49:56.147 回答