Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq to sql EntityRefs和EntitySets-何时检索它们?_Linq To Sql - Fatal编程技术网

Linq to sql EntityRefs和EntitySets-何时检索它们?

Linq to sql EntityRefs和EntitySets-何时检索它们?,linq-to-sql,Linq To Sql,假设我有一个名为“A”的实体,其中包含一个EntityRef和一个EntitySet。我很好奇,默认情况下,当从数据库中检索到“A”时,EntityRef和EntitySet究竟何时被检索?从我的实验来看,EntityRef是在从数据库检索实体“A”的同时检索的,EntitySet是在我开始迭代EntitySet实体时检索的。这是正确的吗 谢谢-Randy是的,关于默认设置,您是正确的。您还可以通过以下几种方式自定义行为:在模型中(取决于提供程序),您可以将延迟加载属性设置为在获取主对象时获取,

假设我有一个名为“A”的实体,其中包含一个EntityRef和一个EntitySet。我很好奇,默认情况下,当从数据库中检索到“A”时,EntityRef和EntitySet究竟何时被检索?从我的实验来看,EntityRef是在从数据库检索实体“A”的同时检索的,EntitySet是在我开始迭代EntitySet实体时检索的。这是正确的吗


谢谢-Randy

是的,关于默认设置,您是正确的。您还可以通过以下几种方式自定义行为:在模型中(取决于提供程序),您可以将延迟加载属性设置为在获取主对象时获取,或等待请求该特定属性(默认)

此外,在使用
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;
公共类父类
{
公共字符串名称{get;set;}
公共EntitySet子项{get;set;}
}
公营儿童
{
公共字符串名称{get;set;}
公共整数{get;set;}
}
var dlo=新数据加载选项();
dlo.LoadWith(p=>p.Children);
var dc=新数据上下文();
dc.LoadOptions=dlo;
var parentAndChildren=来自dc中的p。家长选择p;
上面的代码将执行左连接,以在单个查询中获取子级。您可以在中找到更多示例。还有一个类似的例子


另外,如果您需要更早地加载EntitySet,您可以使用它。

嗨,Nick,我有一个小疑问,我知道了过滤EntitySet的方法。但在一个类中,我有一个entityref,即1到1映射。例如:如果我们查看上面的“父”类,则假定我们有一个名为“子”的实体引用类。在这里,我设置了一个名为“isBorn”的成员标志,我想知道何时加载父级,我想根据条件“isBorn”=true加载子级。是否可能?。请帮帮我