如果我有 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);
}
我怎样才能急切地将表 3 加载到表 2 中,因为延迟加载是 关掉。
您可以尝试:
using(Entities entities = new Entities())
{
Table1 table = entities.Table1.FirstOrDefault();
table.Table2.CreateSourceQuery().Include("Table3")
.Execute(MergeOption.AppendOnly);
}
我假设您使用的是派生自EntityObject
的实体,而不是 POCO,即 table.Table2
是EntityCollection<T>
或EntityReference<T>
。我不是 100% 确定上面的代码是否会按预期工作。