我有两个实体,比方说汽车和照片。 每张照片都有Car的外键,所以每辆车都有一套照片。
我想列出汽车的一些子集,并列出每辆列出的汽车,我想列出所有照片。
如何使用1 db查询在Entity Framework中执行此操作? 我从一开始就知道我需要照片。
我的代码现在看起来像:
var carList = CarEntities.Where(...).ToList();
foreach(var car in carList){
var photoList = car.Photos.ToList();
}
我认为,EF会为每辆车单独进行数据库查询。
答案 0 :(得分:5)
在查询汽车时,您可以在实体框架中包含照片。
var carList = CarEntities.Include(c => c.Photos).Where(...).ToList();
答案 1 :(得分:4)
ckal的答案非常接近,除非最后使用包含,否则EF可能并不总是包含它(暂时不能回想起原因),
var carList = CarEntities.Where(...).Include(c => c.Photos).ToList();
编辑:这是原因...... Entity Framework Include() is not working
答案 2 :(得分:1)
“选择新”是您可能想要做的事情。创建一个名为CarWithPhotos
的新类,并使用它来返回一组结果:
var carWithPhotos = from car in CarEntities
where (...)
select new CarWithPhotos(car, car.Photos.ToList());
据我了解,这可以编译成一个数据库之旅,我认为这就是你所追求的。
编辑:当我查询的对象很大并且我并不总是想要检索整个“Car”对象时,我使用了这种技术。