EntityRefs和EntitySets - 它们何时被检索?

时间:2009-12-22 00:24:34

标签: linq-to-sql

假设我有一个名为“A”的实体,它包含一个EntityRef和一个EntitySet。我很好奇,当从数据库中检索到“A”时,默认情况下是否检索到EntityRef和EntitySet?从我的实验来看,似乎在从数据库检索实体“A”的同时检索EntityRef,并且当我开始迭代EntitySet实体时检索EntitySet。这是对的吗?

谢谢 - 兰迪

1 个答案:

答案 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()