我有一个有很多B子女的父实体A.
为了提高网站的性能,我想首先按给定的ID选择父A并向用户显示。并在后台加载A的子项并在准备好后显示它们。
我当前的查询:
var result = session.QueryOver<A>().Where(a.ID = "123").List<A>();
return result.FirstOrDefault();
此查询选择并返回A及其所有孩子。
任何人都知道如何让nhibernate只加载A的字段?
使用lazy对我不好,因为我想创建另一个查询,在用户收到A后选择子项。
答案 0 :(得分:0)
我创建了一个DTO类,它准确地描述了您想要的A
字段:
public class ADto
{
public int Id { get; set; }
public string Property1 { get; set; }
public string Property2 { get; set; }
}
然后使用QueryOver仅选择这些属性:
ADto result = null;
ADto dto = session.QueryOver<A>()
.Where(a => a.Id == "123")
.SelectList(list => list
.Select(a => a.Id).WithAlias(() => result.Id)
.Select(a => a.Property1).WithAlias(() => result.Property1)
.Select(a => a.Property2).WithAlias(() => result.Property2)
)
.TransformUsing(Transformers.AliasToBeanTransformer<ADto>())
.SingleOrDefault<ADto>();
然后编写一个单独的类似查询来检索A
的孩子。