1

ObjectB(対応するObjectBDTO)のコレクションを持つObjectA(対応するObjectADTO)があります。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; }
    }

//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; }
    }
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 に答える