在我的查询中,我试图选择所有实体(其中 20 个)并像这样遍历集合
List<Domain.Property> data = session.Query<Domain.Property>().ToList();
PropertyViewModel viewModel;
List<PropertyViewModel> listOfViewModels = new List<PropertyViewModel>();
foreach (Domain.Property prop in data)
{
viewModel = new PropertyViewModel()
{
AdType = prop.AdType.ToString(),
CityName = prop.CityName,
ContructionYear = prop.ConstructionYear,
Photo = prop.Photos.First()
};
}
listOfViewModels.Add(viewModel);
每个属性必须有一张或多张照片,我只需要第一张,所以我使用 Photos.First()
当这一行被注释掉时 Photo = prop.Photos.First() nhib。探查器报告加载了 20 个实体,这很好(来自第一个查询的实体)。
但是随着 Photo = prop.Photos.First() 加载的实体增加到 65 个实体,这个数字应该约为。等于属性+照片集。
谁能指出正确的方向?
在 nhib 中。生成的sql有
SELECT photos0_.PropertyId as PropertyId1_,
photos0_.Id as Id1_,
photos0_.Id as Id1_0_,
photos0_.ImageData as ImageData1_0_,
photos0_.ImageMimeType as ImageMim3_1_0_,
photos0_.PropertyId as PropertyId1_0_
FROM Photo photos0_
WHERE photos0_.PropertyId = 117 /* @p0 */
标记为 SELECT N+1