Article View: alt.pl.comp.lang.csharp
Article #21795Re: [NH] złożone zapytanie na POCOsa
From: Łukasz 'Maly' Ostrowski
Date: Tue, 19 Oct 2010 17:00
Date: Tue, 19 Oct 2010 17:00
57 lines
2312 bytes
2312 bytes
On Tue, 19 Oct 2010 17:48:43 +0200, GrzybSon wrote:
>> CriteriaAPI czy QueryOver? Tzn. czy NH2 czy NH3?
>
> Dla NH2.1 poproszę :)
Zakładając że masz:
class Produkt
{
public virtual int Id { get; set; }
public virtual string Nazwa { get; set; }
<...>
public virtual TypProduktu Typ { get; set; }
}
class TypProduktu
{
public virtual int Id { get; set; }
<...>
prop virtual string Nazwa { get; set; }
}
i mapowanie typu References na Produkt.Typ do TypProduktu,
oraz DTO:
class ProduktZTypem
{
<...>
public string NazwaProduktu { get; set; };
public string NazwaTypu { get; set; };
<...>
}
to będzie coś w tą okolicę:
var prodZTypami = new List<ProduktZTypem>();
var produkty = session.CreateCriteria<Produkt>()
.SetFetchMode("Typ", FetchMode.Eager);
.Add(jakieś tam warunki i inne ograniczenia)
.List<Produkt>()
.ToList()
.ForEach(p => prodZTypami.Add(new ProduktZTypem
{
NazwaProduktu = p.Nazwa,
NazwaTypu = p.Typ.Nazwa
}
));
I to nie spowoduje zapytania N+1 bo Typ masz już nie jako
proxy tylko jako entity ;-).
Z leniwym .ToList().ForEach(lambda) to skrót myślowy ;-).
--
Pozdrawiam,
Łukasz 'Maly' Ostrowski. http://l3v.pl/
Technical Details
Message-ID:
<86gdab82dzt0.1adnit32d5lgv$.dlg@40tude.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mailReferences:
<i9k3ui$q7n$1@news.onet.pl> <10ibcbohh6ur1.1fgo6k5548jv0$.dlg@40tude.net> <i9k8nf$8ue$1@news.onet.pl> <bgexfen4jbfy$.11u8y5rg62a7p$.dlg@40tude.net> <i9kekl$p4r$1@news.onet.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail From: Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl> Newsgroups: alt.pl.comp.lang.csharp Subject: Re: [NH] złożone zapytanie na POCOsa Date: Tue, 19 Oct 2010 19:00:31 +0200 Organization: Acme Lines: 57 Message-ID: <86gdab82dzt0.1adnit32d5lgv$.dlg@40tude.net> References: <i9k3ui$q7n$1@news.onet.pl> <10ibcbohh6ur1.1fgo6k5548jv0$.dlg@40tude.net> <i9k8nf$8ue$1@news.onet.pl> <bgexfen4jbfy$.11u8y5rg62a7p$.dlg@40tude.net> <i9kekl$p4r$1@news.onet.pl> NNTP-Posting-Host: static-78-9-71-129.ssp.dialog.net.pl Mime-Version: 1.0 X-Trace: news.dialog.net.pl 1287507651 16994 78.9.71.129 (19 Oct 2010 17:00:51 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Tue, 19 Oct 2010 17:00:51 +0000 (UTC) User-Agent: 40tude_Dialog/2.0.15.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit