1

我有 ObjectA(带有相应的 ObjectADTO)和 ObjectB 的集合(带有相应的 ObjectBDTO)。如何在 ObjectB 上使用 join 查询所有 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; }
    }

// 映射到 =>

    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; }
    }
4

1 回答 1

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中的语法,但你明白了

于 2012-06-06T06:29:25.887 回答