我有ObjectA(带有相应的ObjectADTO)和ObjectB的集合(带有相应的ObjectBDTO)。 如何通过ObjectB上的连接查询所有ObjectA并将它们映射到DTO中? 我真的不想查询db中的所有内容。
class ObjectA {
public string Name { get; set; }
public byte[] Garbage { get; set; }
public IEnumerable<ObjectB> Collection { get; set; }
}
class ObjectB {
public string Name { get; set; }
public byte[] Garbage { get; set; }
public ObjectA Parent { get; set; }
}
// MAPS to =&gt;
class ObjectADTO {
public string Name { get; set; }
public IEnumerable<ObjectBDTO> Collection { get; set; }
}
class ObjectBDTO {
public string Name { get; set; }
public ObjectADTO Parent { get; set; }
}
答案 0 :(得分:0)
可以这样做:
ObjectB objectBAlias = null;
var query = _session.QueryOver<ObjectA>()
.JoinAlias(x=>x.Collection, ()=> objectBAlias, JoinType.LeftOuterJoin)
.List();
var list = query.Select(x=>new ObjectADTO
{
Name=x.Name,
Children=x.Collection.Select(c=>new ObjectBDTO {Name=c.Name, Parent=x).ToList()
})
.ToList();
没有检查VS中的语法,但是你明白了