【问题标题】:Query DTO with DTO collection NHibernate使用 DTO 集合 NHibernate 查询 DTO
【发布时间】:2012-06-05 12:49:22
【问题描述】:

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

【问题讨论】:

    标签: nhibernate alias fetch dto


    【解决方案1】:

    可以这样做:

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

    【讨论】:

      猜你喜欢
      • 2018-04-16
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多