3
我想將一個實體的集合投影到DTO中。用簡單的屬性很容易,但與收藏的一個問題:NHibernate的QueryOver預測 - 投影集合到DTO
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),
// what project here to project blogAlias.Comments into myDTO.Comments))
.TransformUsing(Transformers.AliasToBean<MyDTO>()
.SingleOrDefault<MyDTO>();
編輯UPDATE
我似乎無法得到一個簡單的投影運行,即使沒有變換,並得到: 「索引超出陣列的界限」:
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>();
嘗試changin此:_session.QueryOver((=)=> blogAlias) .JoinAlias((=)=> blogAlias.Comments –
Baz1nga
爲什麼當它清楚地詢問另一個問題時,它是否作爲副本關閉?鏈接的問題涉及CriteriaQuery而不是QueryOver。 –
我同意這個問題不是重複的。投票重新打開 – JoshBerke