列出实体框架中外键指向的实体

时间:2012-11-21 16:21:23

标签: c# database performance entity-framework

我有两个实体,比方说汽车和照片。 每张照片都有Car的外键,所以每辆车都有一套照片。

我想列出汽车的一些子集,并列出每辆列出的汽车,我想列出所有照片。

如何使用1 db查询在Entity Framework中执行此操作? 我从一开始就知道我需要照片。

我的代码现在看起来像:

var carList = CarEntities.Where(...).ToList();
foreach(var car in carList){
    var photoList = car.Photos.ToList();
}

我认为,EF会为每辆车单独进行数据库查询。

3 个答案:

答案 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”对象时,我使用了这种技术。