🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: [NH] złożone zapytanie na POCOsa

#21795
From: Łukasz 'Maly' Ostrowski
Date: Tue, 19 Oct 2010 17:00
57 lines
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-mail
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>

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