简体   繁体   English

使用DTO集合NHibernate查询DTO

[英]Query DTO with DTO collection NHibernate

I have ObjectA (with corresponding ObjectADTO) with collection of ObjectB (with corresponding ObjectBDTO). 我有ObjectA(带有相应的ObjectADTO)和ObjectB(带有相应的ObjectBDTO)的集合。 How can I query all ObjectA with join on ObjectB and map them both into DTOs? 如何查询所有带有ObjectB上的join的ObjectA并将它们都映射到DTO? I really don`t want to query everything from 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 => //将MAPS转换为=>

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

Could do something like this: 可以做这样的事情:

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();

Didn't check the syntax in VS, but you get the idea 没有检查VS中的语法,但是您知道了

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM