🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
21 messages
21 total messages Started by GrzybSon Tue, 19 Oct 2010 12:46
[NH] złożone zapytanie na POCOsa
#21790
Author: GrzybSon
Date: Tue, 19 Oct 2010 12:46
21 lines
1585 bytes
Witam,

powiedzmy, że mamy w bazie tabelę Produkt i powiązana z nią tabelę 
słownikową TypProduktu.

Teraz zapytanie wybierające Produkt wraz z nazwą TypProduktu będzie mniej 
więcej wyglądało tak:

select p.Nazwa, tp.Nazwa as TypProduktu
from Produkt p inner join TypProduktu tp
on p.id_typuProduktu = tp.id

Teraz mam klasę ProduktZTypem, która dokładnie odwzorowuje wyniki tego 
zapytania.
Jak zamapować taką klasę, która będzie typowo tylko do pobierania danych z 
bazy używając NH?
Czy wogóle da się cos takiego zrobić w NH?

--
Pozdro,
 Maćko 
Re: [NH] złożone zapytanie na POCOsa
#21791
Author: Łukasz 'Maly' Ostrowski
Date: Tue, 19 Oct 2010 13:54
20 lines
1616 bytes
On Tue, 19 Oct 2010 14:46:08 +0200, GrzybSon wrote:
> Teraz mam klasę ProduktZTypem, która dokładnie odwzorowuje wyniki tego 
> zapytania.

Jak już wcześniej Wiktor pisał, to jest DTO, powin z bazy produkt
razem z eager załadowanym typem i na tej podstawie utwórz DTO,
jako zwykły detached POCO ;-).

> Jak zamapować taką klasę, która będzie typowo tylko do pobierania danych z 
> bazy używając NH?
> Czy wogóle da się cos takiego zrobić w NH?

Specjalnie mapować composite DTO jako osobno mapowany entity? 
Se ne da. Bo równie dobrze możesz nieść ze sobą obiekt domenowy
wraz z eager loaded relacją, a jak chcesz coś pchać do
widoku to lepiej to zrobić DTO - tzn. Twój ProduktZTypem.

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
Re: [NH] złożone zapytanie na POCOsa
#21792
Author: GrzybSon
Date: Tue, 19 Oct 2010 14:07
9 lines
1313 bytes
> Jak już wcześniej Wiktor pisał, to jest DTO, powin z bazy produkt
> razem z eager załadowanym typem i na tej podstawie utwórz DTO,
> jako zwykły detached POCO ;-).

Możesz wypluć jakiegoś sampla do zilustrowania tego?

--
Pozdro,
 Maćko 
Re: [NH] złożone zapytanie na POCOsa
#21793
Author: Łukasz 'Maly' Ostrowski
Date: Tue, 19 Oct 2010 14:13
8 lines
1122 bytes
On Tue, 19 Oct 2010 16:07:41 +0200, GrzybSon wrote:
> Możesz wypluć jakiegoś sampla do zilustrowania tego?

CriteriaAPI czy QueryOver? Tzn. czy NH2 czy NH3?

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
Re: [NH] złożone zapytanie na POCOsa
#21794
Author: GrzybSon
Date: Tue, 19 Oct 2010 15:48
7 lines
1337 bytes
W dniu 2010-10-19 16:13, Łukasz 'Maly' Ostrowski pisze:
> On Tue, 19 Oct 2010 16:07:41 +0200, GrzybSon wrote:
>> Możesz wypluć jakiegoś sampla do zilustrowania tego?
> 
> CriteriaAPI czy QueryOver? Tzn. czy NH2 czy NH3?

Dla NH2.1 poproszę :)
Re: [NH] złożone zapytanie na POCOsa
#21795
Author: Ł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/
Re: [NH] złożone zapytanie na POCOsa
#21796
Author: GrzybSon
Date: Wed, 20 Oct 2010 07:27
68 lines
3044 bytes
Witam,


> 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 ;-).
>

Dzięki za to :)
Ale teraz interesuje mnie jak użyć funkcji matematycznych w NH?
W bazie mamy pewne dane geospatialne i np. potrzebujemy wyznaczyć najbliższą 
miejscowość dla zadanych współrzędnych (długość, szerokość). Do tego 
potrzebne są funkcje trygonometryczne jak SIN, COS. W poprzedniej wersji 
bazy do takich obliczeń używałem UDFów C#.
Czy HQL przewiduje jakiś minimalny zestaw funkcji trygonometrycznych do 
użycia na każdej bazie?
Czy ICriterionem da się filtrować dane z użyciem takich najprostszych 
funkcji jak SIN COS?

--
Pozdro,
 Maćko 
Re: [NH] złożone zapytanie na POCOsa
#21797
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 20 Oct 2010 08:52
24 lines
1938 bytes
On Wed, 20 Oct 2010 09:27:28 +0200, GrzybSon wrote:
> Dzięki za to :)

Luzik, zawsze jest łatwiej jak się nie wyzywamy ;-).

> Ale teraz interesuje mnie jak użyć funkcji matematycznych w NH?
> W bazie mamy pewne dane geospatialne i np. potrzebujemy wyznaczyć najbliższą 
> miejscowość dla zadanych współrzędnych (długość, szerokość). Do tego 
> potrzebne są funkcje trygonometryczne jak SIN, COS. W poprzedniej wersji 
> bazy do takich obliczeń używałem UDFów C#.
> Czy HQL przewiduje jakiś minimalny zestaw funkcji trygonometrycznych do 
> użycia na każdej bazie?

Podejrzewam że możesz bezpośrednio machać COS/SIN w HQLu, nie
probówałem.

> Czy ICriterionem da się filtrować dane z użyciem takich najprostszych 
> funkcji jak SIN COS?

Tak, za pomocą Projections.SqlFunction.

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
Re: [NH] złożone zapytanie na POCOsa
#21798
Author: GrzybSon
Date: Wed, 20 Oct 2010 10:32
29 lines
2326 bytes
>> Dzięki za to :)
>
> Luzik, zawsze jest łatwiej jak się nie wyzywamy ;-).

Także popieram to podejście :]

im dalej w las tym więcej eksepszynów z Nh, więc mam następne pytanie:

mam tą tabelę produkty zmapowaną na klasę Produkt i teraz za pomocą 
HQLa/ICriteria chcę oprócz wszystkich kolumn z tej tabeli chcę wypluć 
dodatkową kolumnę nie z tej tabeli tzn nie objętą mapowaniem

przykładowe zapytanie w SQLu : select p.*, 1 as nowaKolumna  from Produkt p

w moim przypadku nowaKolumna będzie wyliczana na podstawie wartosci z tabeli 
Produkt przykładowo
nowaKolmna = cena_netto * 1.22

Jak to zamapować? Czy muszę utworzyć nową klasę ProduktZCenąBrutto, która 
dziedziczy z Produktu, aby sie dostać do tej wartości z nowej kolumny? Jak 
takie zapytanie napisać w HQL/ICriteria?

Na blogu Ayende Rahiena sa co prawda przykłady bardzie złożonych zapytań z 
użyciem HQL/ICriteria, ale on operuje tylko na kolumnach, które fizycznie 
istnieją w schemacie bazy.

--
Pozdro,
 Maćko 
Re: [NH] złożone zapytanie na POCOsa
#21799
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 20 Oct 2010 10:49
18 lines
1816 bytes
On Wed, 20 Oct 2010 12:32:41 +0200, GrzybSon wrote:
> w moim przypadku nowaKolumna będzie wyliczana na podstawie wartosci z tabeli 
> Produkt przykładowo
> nowaKolmna = cena_netto * 1.22

> Jak to zamapować? Czy muszę utworzyć nową klasę ProduktZCenąBrutto, która 
> dziedziczy z Produktu, aby sie dostać do tej wartości z nowej kolumny? Jak 
> takie zapytanie napisać w HQL/ICriteria?

Na pierwszy rzut oka powinien pomóc formula mapping:

http://nhforge.org/blogs/nhibernate/archive/2009/04/08/nhibernate-mapping-lt-property-gt.aspx

Ctrl-F - formula, i w formula wsadzasz "cena_netto * 1.22", powinno hulać.

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
Re: [NH] złożone zapytanie na POCOsa
#21800
Author: GrzybSon
Date: Thu, 21 Oct 2010 08:53
32 lines
2784 bytes
Użytkownik "Łukasz 'Maly' Ostrowski" <maly@USUNnemo.pl> napisał w wiadomości 
news:us66lqfuk7re$.1abyyeze2psuc.dlg@40tude.net...
> On Wed, 20 Oct 2010 12:32:41 +0200, GrzybSon wrote:
>> w moim przypadku nowaKolumna będzie wyliczana na podstawie wartosci z 
>> tabeli
>> Produkt przykładowo
>> nowaKolmna = cena_netto * 1.22
>
>> Jak to zamapować? Czy muszę utworzyć nową klasę ProduktZCenąBrutto, która
>> dziedziczy z Produktu, aby sie dostać do tej wartości z nowej kolumny? 
>> Jak
>> takie zapytanie napisać w HQL/ICriteria?
>
> Na pierwszy rzut oka powinien pomóc formula mapping:
>
> http://nhforge.org/blogs/nhibernate/archive/2009/04/08/nhibernate-mapping-lt-property-gt.aspx
>
> Ctrl-F - formula, i w formula wsadzasz "cena_netto * 1.22", powinno hulać.

Poradziłem sobie z tym za pomocą CreateSQLQuery, ponieważ chodziło mi o 
przykładową funkcjonalność wyszukania pojedynczego produktu, który ma 
najwyższą cenę brutto przy założeniu, że w bazie mamy zapisaną tylko cenę 
netto. Oczywiście produkt musi być wypisany wraz z ceną brutto.
Wartość VAT jest dostarczana z zewnątrz jako parametr do SQLa. Wiem, że jest 
to oczywiście podejście nie zgodne z założeniami NH, ale nie potrafię 
przepisać użytego SQLa w MSSQL do wersji HQLowej czy ICriteria.

>
> -- 
> Pozdrawiam,
> Łukasz 'Maly' Ostrowski.      http://l3v.pl/ 
Re: [NH] złożone zapytanie na POCOsa
#21801
Author: Łukasz 'Maly' Ostrowski
Date: Thu, 21 Oct 2010 09:02
15 lines
1935 bytes
On Thu, 21 Oct 2010 10:53:22 +0200, GrzybSon wrote:
> Poradziłem sobie z tym za pomocą CreateSQLQuery, ponieważ chodziło mi o 
> przykładową funkcjonalność wyszukania pojedynczego produktu, który ma 
> najwyższą cenę brutto przy założeniu, że w bazie mamy zapisaną tylko cenę 
> netto. Oczywiście produkt musi być wypisany wraz z ceną brutto.
> Wartość VAT jest dostarczana z zewnątrz jako parametr do SQLa. Wiem, że jest 
> to oczywiście podejście nie zgodne z założeniami NH, ale nie potrafię 
> przepisać użytego SQLa w MSSQL do wersji HQLowej czy ICriteria.

Pokaż zapytanie SQL, pokombinujemy jak to zrobić na bazie 
CreateCriteria ;).

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
Re: [NH] złożone zapytanie na POCOsa
#21802
Author: GrzybSon
Date: Thu, 21 Oct 2010 10:12
70 lines
4071 bytes
Użytkownik "Łukasz 'Maly' Ostrowski" <maly@USUNnemo.pl> napisał w wiadomości 
news:122k9a15n9y6l.wf6dx1tmc9ee$.dlg@40tude.net...
> On Thu, 21 Oct 2010 10:53:22 +0200, GrzybSon wrote:
>> Poradziłem sobie z tym za pomocą CreateSQLQuery, ponieważ chodziło mi o
>> przykładową funkcjonalność wyszukania pojedynczego produktu, który ma
>> najwyższą cenę brutto przy założeniu, że w bazie mamy zapisaną tylko cenę
>> netto. Oczywiście produkt musi być wypisany wraz z ceną brutto.
>> Wartość VAT jest dostarczana z zewnątrz jako parametr do SQLa. Wiem, że 
>> jest
>> to oczywiście podejście nie zgodne z założeniami NH, ale nie potrafię
>> przepisać użytego SQLa w MSSQL do wersji HQLowej czy ICriteria.
>
> Pokaż zapytanie SQL, pokombinujemy jak to zrobić na bazie
> CreateCriteria ;).

Prąciem bardzo:

const decimal ll2rad = (decimal)(Math.PI / 180.0);

            IList<Gazeter> places = null;

            latitude = latitude * ll2rad;
            longitude = longitude * ll2rad;
GenericSingleton<DataProvider>.Instance.InTransaction(
                session =>
                {
                    places = session.CreateSQLQuery("select top 1 gg.*, 
cast(6371.0*ACOS(SIN(latitudeRad)*SIN(:lat2)+COS(latitudeRad)*COS(:lat2)*COS(:lon2-longitudeRad)) 
as numeric(18,9)) as distance from gazeter gg order by distance asc")
                        .AddEntity(typeof(Gazeter))
                        .SetParameter<decimal>("lat2", latitude)
                        .SetParameter<decimal>("lon2", longitude)
                        .List<Gazeter>();

});

public class Gazeter
{
 ...
 public virtual decimal Distance { get; set; }
}

gazeter.hbm.xml

<?xml version="1.0" encoding="utf-8"?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="KenBIT.Nawigator.Domain.Gazeter,NH.Domain" table="gazeter" 
lazy="true" schema="dbo">
    <id name="Id" column="id" type="Decimal">
      <generator class="assigned" />
    </id>
    <property name="Label" column="label" type="string" not-null="true" />
    <property name="Latitude" column="latitude" type="Decimal" 
not-null="true" />
    <property name="Longitude" column="longitude" type="Decimal" 
not-null="true" />
    <property name="LatitudeRad" column="latitudeRad" type="Decimal" 
not-null="true" />
    <property name="LongitudeRad" column="longitudeRad" type="Decimal" 
not-null="true" />
    <property name="Distance" type="Decimal" update="false" insert="false" 
/>
  </class>
</hibernate-mapping>

>
> -- 
> Pozdrawiam,
> Łukasz 'Maly' Ostrowski.      http://l3v.pl/ 
Re: [NH] złożone zapytanie na POCOsa
#21803
Author: Łukasz 'Maly' Ostrowski
Date: Thu, 21 Oct 2010 13:44
35 lines
2553 bytes
On Thu, 21 Oct 2010 12:12:41 +0200, GrzybSon wrote:
> const decimal ll2rad = (decimal)(Math.PI / 180.0);
> 
>             IList<Gazeter> places = null;
> 
>             latitude = latitude * ll2rad;
>             longitude = longitude * ll2rad;
> GenericSingleton<DataProvider>.Instance.InTransaction(
>                 session =>
>                 {
>                     places = session.CreateSQLQuery("select top 1 gg.*, 
> cast(6371.0*ACOS(SIN(latitudeRad)*SIN(:lat2)+COS(latitudeRad)*COS(:lat2)*COS(:lon2-longitudeRad)) 
> as numeric(18,9)) as distance from gazeter gg order by distance asc")
>                         .AddEntity(typeof(Gazeter))
>                         .SetParameter<decimal>("lat2", latitude)
>                         .SetParameter<decimal>("lon2", longitude)
>                         .List<Gazeter>();
> 
> });
> 

Jesus maria ;-), lepiej żebyś z tym został jako CreateSQLQuery. =]

Znajomy zasugerował jeszcze:

http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx

Ale tego nie próbowałem nigdy robić więc trudno mi coś na ten
temat powiedzieć.

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
ICQ: 148498663     GG: 2544385      AIM: malyzgora
GTalk: l3vi4than@gmail.com        ASTRA: L3viathan
Re: [NH] złożone zapytanie na POCOsa
#21804
Author: GrzybSon
Date: Thu, 21 Oct 2010 20:56
44 lines
3043 bytes
W dniu 2010-10-21 15:44, Łukasz 'Maly' Ostrowski pisze:

> On Thu, 21 Oct 2010 12:12:41 +0200, GrzybSon wrote:
>> const decimal ll2rad = (decimal)(Math.PI / 180.0);
>>
>>             IList<Gazeter> places = null;
>>
>>             latitude = latitude * ll2rad;
>>             longitude = longitude * ll2rad;
>> GenericSingleton<DataProvider>.Instance.InTransaction(
>>                 session =>
>>                 {
>>                     places = session.CreateSQLQuery("select top 1 gg.*, 
>> cast(6371.0*ACOS(SIN(latitudeRad)*SIN(:lat2)+COS(latitudeRad)*COS(:lat2)*COS(:lon2-longitudeRad)) 
>> as numeric(18,9)) as distance from gazeter gg order by distance asc")
>>                         .AddEntity(typeof(Gazeter))
>>                         .SetParameter<decimal>("lat2", latitude)
>>                         .SetParameter<decimal>("lon2", longitude)
>>                         .List<Gazeter>();
>>
>> });
>>

> Jesus maria ;-), lepiej żebyś z tym został jako CreateSQLQuery. =]

He he, wiedziałem, że się spodoba :)
To tylko strasznie wygląda, ale jest to zapytanie tej samej klasy co

select top 1 p.*, (p.cena_netto * 1,22) as cena_brutto from produkty p
order by cena_brutto asc

Jeżeli to zapytanie wyżej uda Ci się przepisać na HQL/ICriteria to wtedy
analogicznie rozwiąże to problem mojego zapytania.

> 
> Znajomy zasugerował jeszcze:
> 
> http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx

Nie znam tego, ale na tą chwilę to chyba wytaczanie armaty na muchę :)

--
Pozdro,
 Maćko
Re: [NH] złożone zapytanie na POCOsa
#21805
Author: Łukasz 'Maly' Ostrowski
Date: Fri, 22 Oct 2010 08:20
19 lines
2007 bytes
On Thu, 21 Oct 2010 22:56:44 +0200, GrzybSon wrote:
> He he, wiedziałem, że się spodoba :)
> To tylko strasznie wygląda, ale jest to zapytanie tej samej klasy co
> 
> select top 1 p.*, (p.cena_netto * 1,22) as cena_brutto from produkty p
> order by cena_brutto asc

Nie, bo tutaj masz same stałe więc mógłbyś zrobić z tego
<property formula="cena_netto * 1.22" />.

> Jeżeli to zapytanie wyżej uda Ci się przepisać na HQL/ICriteria to wtedy
> analogicznie rozwiąże to problem mojego zapytania.

Generalnie trzeba użyć Expression.Sql, w Projection i w Order,
szkoda zachodu ;-).

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
Re: [NH] złożone zapytanie na POCOsa
#21806
Author: GrzybSon
Date: Fri, 22 Oct 2010 11:34
23 lines
2333 bytes
> On Thu, 21 Oct 2010 22:56:44 +0200, GrzybSon wrote:
>> He he, wiedziałem, że się spodoba :)
>> To tylko strasznie wygląda, ale jest to zapytanie tej samej klasy co
>>
>> select top 1 p.*, (p.cena_netto * 1,22) as cena_brutto from produkty p
>> order by cena_brutto asc
>
> Nie, bo tutaj masz same stałe więc mógłbyś zrobić z tego
> <property formula="cena_netto * 1.22" />.
>
>> Jeżeli to zapytanie wyżej uda Ci się przepisać na HQL/ICriteria to wtedy
>> analogicznie rozwiąże to problem mojego zapytania.
>
> Generalnie trzeba użyć Expression.Sql, w Projection i w Order,
> szkoda zachodu ;-).

Czyli co, zostawić jak jest?

>
> -- 
> Pozdrawiam,
> Łukasz 'Maly' Ostrowski.      http://l3v.pl/ 
Re: [NH] złożone zapytanie na POCOsa
#21807
Author: Łukasz 'Maly' Ostrowski
Date: Fri, 22 Oct 2010 12:04
11 lines
1908 bytes
On Fri, 22 Oct 2010 13:34:23 +0200, GrzybSon wrote:
>> Generalnie trzeba użyć Expression.Sql, w Projection i w Order,
>> szkoda zachodu ;-).
> 
> Czyli co, zostawić jak jest?

Ja bym zostawił tak jak jest.

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
Re: złożone zapytanie na POCOsa
#21808
Author: Macko
Date: Fri, 26 Nov 2010 15:36
17 lines
2550 bytes
On 22 Paź, 13:04, Łukasz 'Maly' Ostrowski <m...@USUNnemo.pl> wrote:
> On Fri, 22 Oct 2010 13:34:23 +0200, GrzybSon wrote:
> >> Generalnie trzeba u y Expression.Sql, w Projection i w Order,
> >> szkoda zachodu ;-).
>
> > Czyli co, zostawi jak jest?
>
> Ja bym zostawi tak jak jest.
>
> --
> Pozdrawiam,
> ukasz 'Maly' Ostrowski.      http://l3v.pl/

Mam jeszcze pytanko: bo widziałem, że śmigasz teraz także w NH 3.0.
Czy sekcje w konfigu dla NH 3.0 różnią się bardzo od tych z 2.0?
Pytam bo zamierzam się przeflancować na v3.0. Czy hbmy z 2 będą
pasowały w 3 (kompatybilność wsteczna jest)?
Re: złożone zapytanie na POCOsa
#21809
Author: Łukasz 'Maly' Ostrowski
Date: Fri, 26 Nov 2010 23:01
14 lines
2125 bytes
On Fri, 26 Nov 2010 07:36:56 -0800 (PST), Macko wrote:
> Mam jeszcze pytanko: bo widziałem, że śmigasz teraz także w NH 3.0.
> Czy sekcje w konfigu dla NH 3.0 różnią się bardzo od tych z 2.0?
> Pytam bo zamierzam się przeflancować na v3.0. Czy hbmy z 2 będą
> pasowały w 3 (kompatybilność wsteczna jest)?

Tak. Wszystko hula w formie w jakiej hulalo wcześniej, tyle
że .hbm'ów nie pisze z palca, tylko za pomocą "pasującej 
wersji" FluentNHibernate. Ale generalnie nic się nie 
zmieniło w formacie configa samego NH.

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.eu/
Re: złożone zapytanie na POCOsa
#21810
Author: GrzybSon
Date: Sat, 27 Nov 2010 20:40
53 lines
3638 bytes
W dniu 2010-11-27 00:01, Łukasz 'Maly' Ostrowski pisze:
> Tak. Wszystko hula w formie w jakiej hulalo wcześniej, tyle
> że .hbm'ów nie pisze z palca, tylko za pomocą "pasującej 
> wersji" FluentNHibernate. Ale generalnie nic się nie 
> zmieniło w formacie configa samego NH.


Nie no QueryOver wymiata :) Chwilowo jestem zachwycony tym narządem.
Problem mam tylko z joinowaniem kilku tabel:

//
-----------------------------------------------------------------------------------------
        public static List<Plyty> GetAllCDs()
        //
-----------------------------------------------------------------------------------------
        {

            List<Plyty> dto = null;
            IQueryOver<Plyty> query;

            GenericSingleton<DataProvider>.Instance.InTransaction(
                session =>
                {
                    /*
                    dto = session.CreateCriteria<Plyty>()

.CreateCriteria("ProducentPlyty",JoinType.InnerJoin)
                        //.CreateCriteria("RodzajPlyty", JoinType.InnerJoin)
                        .List<Plyty>().ToList();
                    */

                    dto = session.QueryOver<Plyty>()
                        .Fetch(plyta => plyta.ProducentPlyty).Eager
                        .Fetch(plyta => plyta.RodzajPlyty).Eager
                        //.Inner.JoinQueryOver<RodzajPlyty>(plyty =>
plyty.Plyty);
                        .List().ToList();
                });


            return dto;
        }

To powyższe działa miodnie, ale przy użyciu Inner.JoinQueryOver coś nie
chciało mi wychodzić dla joinowania z drugą tabelą tzn. joinowanie z
ProducentemPlyty poszło, ale gdy próbowałem powtórzyć manewr z
RodzajemPlyty to coś kompilator pokazywał mi środkowy palec.

Wiesz jak to przepisać używając tylko Inner.JoinQueryOver?

--
Pozdro,
 Maćko
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads