如果我有一个包含汽车列表的制造商对象,并且汽车对象有一个功能列表,我如何返回包含所有汽车列表的制造商对象,该列表中的每辆汽车都包含一个列表特征。我在网上看到的每个例子都使用了一个2层的对象。这是我所拥有的,它返回制造商和汽车列表,但每辆汽车返回0结果的功能列表
Manufacturer man = new Manufacturer();
using (MyEntities db = new MyEntities())
{
man= (from m in db.Manufacturer.Include("Cars")
where m.Name.Trim().Equals("Ford")
select m).FirstOrDefault();
}
return man;
答案 0 :(得分:1)
如果您想使用延迟加载,只需将导航属性声明为'虚拟'
如果您想要加载所有相关对象,可以使用Includes:
.Include("Cars").Include("Cars.Features")
该方法的一个缺点是查询执行起来可能很昂贵。原因是将使用多个连接,并且生成的服务器答案的大小可能非常大。
您可以使用此策略加载一个级别:
Manufacturer man = new Manufacturer();
using (MyEntities db = new MyEntities())
{
man= (from m in db.Manufacturer
where m.Name.Trim().Equals("Ford")
select m).FirstOrDefault();
models = man.SelectMany(m => m.Cars);
features = models.SelectMany(m => m.Features);
man.Load();
models.Load();
features.Load();
}
return man;