NHibernate AliasToBeanResultTransformer&Collections

|| 我想从我的数据层返回一个DTO,它也将包含子集合...例如:
Audio
 - Title
 - Description
 - Filename
 - Tags
     -  TagName
 - Comments
     -  PersonName
     -  CommentText
到目前为止,这是一个基本查询,但是我不确定如何将子集合从我的实体转换为DTO。
var query = Session.CreateCriteria<Audio>(\"audio\")
            .SetProjection(
                Projections.ProjectionList()
                    .Add(Projections.Property<Audio>(x => x.Title))
                    .Add(Projections.Property<Audio>(x => x.Description))
                    .Add(Projections.Property<Audio>(x => x.Filename))
            ).SetResultTransformer(new AliasToBeanResultTransformer(typeof(AudioDto)))
            .List<AudioDto>();
这是否可能,或者还有另一种推荐的方法吗? 更新: 只是想添加有关我的场景的更多信息...我想将音频项目的列表以及一些关联的实体(例如标签,注释等)返回给当前登录的用户...使用MultiQuery可以很直接地/未来。 但是,当向用户显示音频项目时,我还想向用户显示其他3个选项: 天气他们已经将此音频项目添加到他们的收藏夹列表中 天气使这些音频“竖起大拇指” 如果登录用户是此音频所有者的“关注对象”,
Favourites : Audio -> HasMany -> AudioUserFavourites

Thumbs Up : Audio -> HasManyToMany -> UserAccount

Following Owner : Audio -> References -> UserAccount ->
     ManyToMany-> UserAccount 希望这很有道理...如果不是,我将再次尝试......我如何急于为返回的每个Audio实体加载这些额外的详细信息...我也需要20页的所有这些信息。 我查看了批处理获取,但是这似乎是为每个Audio实体获取所有的赞,而不是检查是否只有登录的用户对其有支持。 抱歉逛逛:-) 保罗     
已邀请:
        如果要同时填充
Tags
Comments
集合来提取
Audio
对象,请访问Aydende Rahien的博客:http://ayende.com/blog/4367/eagerly-loading-entity-associations-ficiently -与-休眠。 您无需为此使用DTO。即使默认情况下延迟加载集合,您也可以获取带有集合的“ 3”列表。您将创建两个将来的查询;第一个将获取连接到标签的音频,第二个将获取连接到注释的音频。之所以起作用,是因为到第二个查询结果被处理时,会话高速缓存中已经有3个对象。 NHibernate从高速缓存中获取ѭ3instead而不是对其进行补水,然后填充第二个集合。 您不需要为此使用将来的查询;如果您只依次执行两个查询,它仍然有效,但是使用Futures只会导致数据库一次往返,从而使其更快。     

要回复问题请先登录注册