假设我有一个名为“A”的实体,它包含一个EntityRef和一个EntitySet。我很好奇,当从数据库中检索到“A”时,默认情况下是否检索到EntityRef和EntitySet?从我的实验来看,似乎在从数据库检索实体“A”的同时检索EntityRef,并且当我开始迭代EntitySet实体时检索EntitySet。这是对的吗?
谢谢 - 兰迪
答案 0 :(得分:1)
是的,您对默认值是正确的。您也可以通过几种方式自定义行为:在模型中(取决于提供者),您可以设置延迟加载属性以在获取主对象时获取,或者等待直到请求该特定属性(默认)
此外,您可以在DataLoadOptions
的查询中为每个查询的每个父级加载一个 EntitySet,例如:
public class Parent
{
public string Name { get; set; }
public EntitySet<Child> Children { get; set; }
}
public class Child
{
public string Name { get; set; }
public int Age { get; set; }
}
var dlo = new DataLoadOptions();
dlo.LoadWith<Parent>(p => p.Children);
var dc = new DataContext();
dc.LoadOptions = dlo;
var parentAndChildren = from p in dc.Parents select p;
上面将执行左连接以在单个查询中获取子项。您可以在DataLoadOptions
MSDN Docs中找到更多示例。还有一个类似的AssociateWith
for restricted loading you may want to check out。
此外,如果您需要先加载EntitySet,则可以call .Load()。