В настоящее время я играю с NH3, и он отлично подходит для простых вещей.
Когда дело доходит до менее простого, мы потерялись.
Я создаю пример базы данных фильмов.
Я хочу отобразить каждую сущность фильма с количеством жанров,
связано с фильмом.
Список вывода должен выглядеть так:
MovieId | Название | Премьера Жанры Количество
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();
Итак, как теперь объединить жанры Query с movieQuery для создания резюме
список сущностей, скажем, MovieSummary (MovieSummary имеет дополнительный столбец GenresCount)?
Можно ли это сделать с помощью QueryOver?
Можно ли это сделать в NH3?
-
С Уважением,
Macko