我想获得一个具有子属性的实体。如何在没有指示映射的情况下使用nhibernate执行此操作。我想通过“LoadWith()”方法控制像linq-to-sql中的提取一样。不是自动化解决方案。
public class Survey
{
public virtual long Id;
public virtual String Title;
public virtual IList<SurveyPage> Pages;
}
我希望在不使用映射文件的情况下,在一个查询中加载其Pages属性的调查。我怎么能在nhibernate中做到这一点?
答案 0 :(得分:1)
解决。这就是我想要的。
IList<Survey> surveys = session.CreateCriteria(typeof(Survey))
.SetFetchMode("SurveyPages", FetchMode.Eager)
.List<Survey>();
答案 1 :(得分:0)
是的,FetchMode是一个很好的做法。要注意的事情是
您只能将fetchmode设置为映射文件的一个集合(一次)。
当您在关联的集合上执行提取模式时,它将返回行的连接。(不会分隔父级的唯一行)。
另一种方法是使用带有Join的HQl查询。