次のような子コレクションも含むデータ層から 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>();
これは可能ですか、またはこれを行う別の推奨される方法はありますか?
更新: シナリオについてもう少し情報を追加したいだけです...オーディオ項目のリストを、現在ログインしているユーザーに、タグ、コメントなどの関連エンティティと共に返したいと思います...これらはかなり簡単ですマルチクエリ/フューチャーを使用。
ただし、ユーザーにオーディオ アイテムを表示するときに、他の 3 つのオプションもユーザーに表示したいと考えています。
- このオーディオ アイテムをお気に入りのリストに追加した天気
- 彼らがこのオーディオを「高く評価」した天気
- ログインしたユーザーがこの音声の所有者を「フォロー」している天気
Favourites : Audio -> HasMany -> AudioUserFavourites Thumbs Up : Audio -> HasManyToMany -> UserAccount Following Owner : Audio -> References -> UserAccount ->
多対多 -> ユーザーアカウント
これが理にかなっていることを願っています...そうでない場合は、もう一度説明します...返された各Audioエンティティのこれらの追加の詳細を熱心にロードするにはどうすればよいですか...20ページのこの情報もすべて必要です。
バッチ フェッチを調べましたが、これは、ログインしているユーザーだけが親指を立てたかどうかを確認するのではなく、オーディオ エンティティごとにすべての親指を立てているようです。
とりとめのない申し訳ありません:-)
ポール