如何在nhibernate中获取具有实体属性的实体?

时间:2009-05-26 11:41:38

标签: c# nhibernate

我想获得一个具有子属性的实体。如何在没有指示映射的情况下使用nhibernate执行此操作。我想通过“LoadWith()”方法控制像linq-to-sql中的提取一样。不是自动化解决方案。

public class Survey
{
   public virtual long Id;
   public virtual String Title;
   public virtual IList<SurveyPage> Pages; 
}

我希望在不使用映射文件的情况下,在一个查询中加载其Pages属性的调查。我怎么能在nhibernate中做到这一点?

2 个答案:

答案 0 :(得分:1)

解决。这就是我想要的。

IList<Survey> surveys = session.CreateCriteria(typeof(Survey))
                        .SetFetchMode("SurveyPages", FetchMode.Eager)
                        .List<Survey>();

答案 1 :(得分:0)

是的,FetchMode是一个很好的做法。要注意的事情是

  1. 您只能将fetchmode设置为映射文件的一个集合(一次)。

  2. 当您在关联的集合上执行提取模式时,它将返回行的连接。(不会分隔父级的唯一行)。

  3. 另一种方法是使用带有Join的HQl查询。