我是stackoverflow的新手,我希望这个问题会受到赞赏。
简单地说:我从表 x 左外连接表 y 中选择所有内容。表 x 的列太多,所以我创建了新对象 x。该对象用于投影。我可以投影表 xi 想要的每一列。但是,当我尝试投影/选择一个集合(表 y 的集合)时,我得到了同样的错误:“索引超出了数组的范围”。
我的问题:NHibernate 是否支持选择/投影集合?因为我通过在谷歌(和stackoverflow)上搜索多次看到这个问题,但这些问题都没有得到回答。
代码示例:
public class X
{
public virtual int ID { get; set; }
public virtual int IDontNeedMoreInfoAboutClassXItTakesToMuchTimeToRetrieve { get; set; }
public virtual IList<Y> YCollection { get; set; }
}
public class Y
{
public virtual int YID { get; set; }
}
public class XRepository{
public ISession Session {get; set;}
public IList<X> Get()
{
X xAlias = null;
Y yAlias = null;
X resultAlias = null;
return Session.QueryOver<X>()
.JoinAlias(() => xAlias.YCollection, () => yAlias, JoinType.LeftOuterJoin)
.SelectList(list => list
.SelectGroup(() => xAlias.ID).WithAlias(() => resultAlias.ID)
.SelectGroup(() => xAlias.YCollection).WithAlias(() => resultAlias.YCollection)) // Index was outside the bounds of the array
.TransformUsing(Transformers.AliasToBean<X>()).List<X>();
}
}