目前我正在玩 NH3,它非常适合非常简单的事情。当谈到不那么简单时,我们迷失了。
我正在创建示例电影数据库。我想显示每个电影实体,其中包含与电影相关的类型计数。输出列表应如下所示:
电影ID | 标题 | 首映 | 流派计数
3 | 布拉布拉| 1990-01-01 | 2
使用 SQL 它看起来像这样:
select f.*, isnull(fg.counter, 0) as genres_count
from dbo.movie f left join
(
select id_movie, count(id_genre) as counter
from dbo.movie_genres
group by id_movie
) fg on f.id = fg.id_movie
如您所见,这是非常简单的汇总 SQL。
现在聚合使用 QueryOver 计算每部电影的流派:
GenreSummary alias = null;
var genresQuery = QueryOver.Of<MovieGenre>()
.SelectList(lista => lista
.SelectGroup(o => o.Film.Id).WithAlias(() => alias.MovieId)
.SelectCount(o => o.Genre).WithAlias(() => alias.GenresCount))
.TransformUsing(Transformers.AliasToBean<GenreSummary>());
电影查询:
var movieQuery = QueryOver.Of<Movie>().ToList();
那么现在如何将genresQuery 与movieQuery 连接起来以创建摘要实体列表,比如说MovieSummary(MovieSummary 有额外的列GenresCount)?可以用 QueryOver 完成吗?可以在NH3中进行吗?
- 问候,麦科