为了减少到数据库的往返,我希望为父对象“预加载”子集合。我希望如果我将构成子集合的对象加载到 DataContext 缓存中,Linq2SQL 将使用这些对象而不是进入数据库。
例如,假设我有一个带有两个子集合的 Person 对象:Children 和 Cars。
我认为这可能有效:
var children = from p in dbc.Person
select p.Children;
var cars = from p in dbc.Person
select p.Cars;
var people = from p in dbc.Person
select p;
var dummy1 = children.ToList();
var dummy2 = cars.ToList();
foreach(var person in people){
Debug.WriteLine(person.Children.Count);
}
但相反,每次调用 时,我仍然会访问一次数据库person.Children.Count
,即使所有子项都已加载到 DataContext 中。
最终,我正在寻找一种在尽可能少的数据库访问中加载完整对象图(具有多个子集合)的方法。
我知道DataLoadOptions
类(和LoadWith
),但它仅限于一个子集合,这对我来说是个问题。
如果我仍然能够构建完整的对象图(当然还有一个 Linq2SQL 对象),而无需对对象进行大量额外操作,我不介意使用存储过程。