エンティティのコレクションをDTOに投影しようとしています。単純なプロパティで簡単に十分な、しかし、コレクションで問題を抱えて:私は、単純な投影を得るように見えることはできませんNHibernate QueryOverの投影法 - コレクションをDTOに投影する
var dto = _session.QueryOver<Blog>(() => blogAlias)
.JoinAlias(x => x.Comments,() => commentsAlias, JoinType.LeftOuterJoin)
.Select(
Projections.Property(() => blogAlias.Reference).WithAlias(() => myDTO.Reference),
// what project here to project blogAlias.Comments into myDTO.Comments))
.TransformUsing(Transformers.AliasToBean<MyDTO>()
.SingleOrDefault<MyDTO>();
EDITのUPDATE
:
public class Blog
{
public string Name {get;set;}
public IList<Comments> Comments {get;set;}
//... more properties
}
public class Comments
{
public Blog Blog {get;set;}
//... more properties
}
public class MyDTO
{
public string BlogName {get;set;}
public IList<Comments> {get;set;}
}
クエリは次のように少し何かを行きます "インデックスが配列の境界外にありました":
var dto = _session.QueryOver<Blog>(() => blogAlias)
.JoinAlias(x => x.Comments,() => commentsAlias, JoinType.LeftOuterJoin)
.Select(
Projections.Property(() => blogAlias.Reference).WithAlias(() => myDTO.Reference),
Projections.Property(() => blogAlias.Comments).WithAlias(() => myDTO.Comments)
.List<object>();
これを変更してみてください:_session.QueryOver(()=> blogAlias) .JoinAlias(()=> blogAlias.Comments –
Baz1nga
明らかに別の質問をしたときに、これを複製として閉じたのはなぜですか?リンクされた問題は、QueryOverではなくCriteriaQueryを処理します。 –
私はこの質問が重複していないことに同意します。返信のために – JoshBerke