私はstackoverflowを初めて使用しますが、この質問が高く評価されることを願っています。
簡単に言うと、テーブルx左外部結合テーブルyからすべてを選択します。テーブルxの列が多すぎるため、新しいオブジェクトxを作成します。このオブジェクトは、プロジェクションに使用されます。テーブルxiのすべての列を投影できます。しかし、コレクション(テーブルyのコレクション)を投影/選択しようとすると、同じエラーが発生します:'インデックスが配列の境界外にありました'。
私の質問:NHibernateはコレクションの選択/投影をサポートしていますか?私はグーグル(そしてスタックオーバーフロー)で検索することによってこの質問を何度も見たが、それらの質問のどれも答えられなかったので。
コード例:
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>();
}
}