🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #21859

Re: QueryOver i distinct

#21859
From: Macko
Date: Mon, 27 Dec 2010 09:05
39 lines
2729 bytes
A więc zabawy z NH3 ciąg dalszy. Tym razem stanąłem na popularnym
temacie tworzenia "summarisów" tzn podsumowań np. raportowych. W moim
przypadku chcę wyświetlić listę filmów wraz z liczbą gatunków
powiązanych z każdym filmem. Takie standardowe podsumowanie
przykładowo:

id | Tytuł pl | Tytuł obcy | Data premiery | Licznik gatunków
-----------------------------------------------------------------
3  | bla      | bla bla    | 1990-01-01    | 2

Za pomocą czystego SQLa załatwiłbym to tak

select f.*, isnull(fg.licznik, 0) as licznik_gatunkow
from dbo.film f left join
(
select id_filmu, count(id_gatunku) as licznik
from dbo.gatunki_filmow
group by id_filmu
) fg on f.id = fg.id_filmu

Agregacja zliczająca gatunki dla każdego filmu za pomocą QueryOver
wygląda u mnie tak:

GenreSummary alias = null;
var genresQuery = QueryOver.Of<GatunkiFilmow>()
.SelectList(lista => lista
.SelectGroup(o => o.Film.Id).WithAlias(() => alias.MovieId)
.SelectCount(o => o.Gatunek).WithAlias(() => alias.GenresCount))
.TransformUsing(Transformers.AliasToBean<GenreSummary>());

Teraz jak to pożenić z encją Film tzn. zjoinować id filmu tą agregacją
powyżej i zwrócić nową encją MovieSummary, która będzie się różniła od
encji Film dodatkową kolumną powiedzmy GenresCount typu int.

Czy da to radę pożenić za pomocą QueryOver?

--
Pozdro,
 Maćko
Technical Details
Message-ID: <fcba19dc-7822-402e-bfed-fa5145814519@l8g2000yqh.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!l8g2000yqh.googlegroups.com!not-for-mail
References: <c4f37da9-ac9a-46e8-9a15-aa7f952f8c1e@p7g2000prb.googlegroups.com> <9pudeanfk8hj$.1ipmya1k3869o$.dlg@40tude.net> <e71194eb-5fd4-4189-808a-56154cb4b273@d24g2000prj.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!l8g2000yqh.googlegroups.com!not-for-mail
From: Macko <maciej_rychter@o2.pl>
Newsgroups: alt.pl.comp.lang.csharp
Subject: Re: QueryOver i distinct
Date: Mon, 27 Dec 2010 01:05:12 -0800 (PST)
Organization: http://groups.google.com
Lines: 41
Message-ID: <fcba19dc-7822-402e-bfed-fa5145814519@l8g2000yqh.googlegroups.com>
References: <c4f37da9-ac9a-46e8-9a15-aa7f952f8c1e@p7g2000prb.googlegroups.com> <9pudeanfk8hj$.1ipmya1k3869o$.dlg@40tude.net> <e71194eb-5fd4-4189-808a-56154cb4b273@d24g2000prj.googlegroups.com>
NNTP-Posting-Host: 80.94.182.138
Mime-Version: 1.0
X-Trace: posting.google.com 1293440712 32657 127.0.0.1 (27 Dec 2010 09:05:12 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Mon, 27 Dec 2010 09:05:12 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: l8g2000yqh.googlegroups.com; posting-host=80.94.182.138; posting-account=0cTB9goAAAB7t_2APYrUFcRoIbYIHqOb
User-Agent: G2/1.0
X-HTTP-Via: 1.1 webwasher (Webwasher 6.8.7.8846)
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12 ( .NET CLR 3.5.30729),gzip(gfe)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit