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
Author: GrzybSon
Date: Tue, 19 Oct 2010 12:46
Date: Tue, 19 Oct 2010 12:46
21 lines
1585 bytes
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
Author: Łukasz 'Maly' Ostrowski
Date: Tue, 19 Oct 2010 13:54
Date: Tue, 19 Oct 2010 13:54
20 lines
1616 bytes
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
Author: GrzybSon
Date: Tue, 19 Oct 2010 14:07
Date: Tue, 19 Oct 2010 14:07
9 lines
1313 bytes
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
Author: Łukasz 'Maly' Ostrowski
Date: Tue, 19 Oct 2010 14:13
Date: Tue, 19 Oct 2010 14:13
8 lines
1122 bytes
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
Author: GrzybSon
Date: Tue, 19 Oct 2010 15:48
Date: Tue, 19 Oct 2010 15:48
7 lines
1337 bytes
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
Author: Ł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/
Re: [NH] złożone zapytanie na POCOsa
Author: GrzybSon
Date: Wed, 20 Oct 2010 07:27
Date: Wed, 20 Oct 2010 07:27
68 lines
3044 bytes
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
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 20 Oct 2010 08:52
Date: Wed, 20 Oct 2010 08:52
24 lines
1938 bytes
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
Author: GrzybSon
Date: Wed, 20 Oct 2010 10:32
Date: Wed, 20 Oct 2010 10:32
29 lines
2326 bytes
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
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 20 Oct 2010 10:49
Date: Wed, 20 Oct 2010 10:49
18 lines
1816 bytes
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
Author: GrzybSon
Date: Thu, 21 Oct 2010 08:53
Date: Thu, 21 Oct 2010 08:53
32 lines
2784 bytes
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
Author: Łukasz 'Maly' Ostrowski
Date: Thu, 21 Oct 2010 09:02
Date: Thu, 21 Oct 2010 09:02
15 lines
1935 bytes
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
Author: GrzybSon
Date: Thu, 21 Oct 2010 10:12
Date: Thu, 21 Oct 2010 10:12
70 lines
4071 bytes
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
Author: Łukasz 'Maly' Ostrowski
Date: Thu, 21 Oct 2010 13:44
Date: Thu, 21 Oct 2010 13:44
35 lines
2553 bytes
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
Author: GrzybSon
Date: Thu, 21 Oct 2010 20:56
Date: Thu, 21 Oct 2010 20:56
44 lines
3043 bytes
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
Author: Łukasz 'Maly' Ostrowski
Date: Fri, 22 Oct 2010 08:20
Date: Fri, 22 Oct 2010 08:20
19 lines
2007 bytes
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
Author: GrzybSon
Date: Fri, 22 Oct 2010 11:34
Date: Fri, 22 Oct 2010 11:34
23 lines
2333 bytes
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
Author: Łukasz 'Maly' Ostrowski
Date: Fri, 22 Oct 2010 12:04
Date: Fri, 22 Oct 2010 12:04
11 lines
1908 bytes
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
Author: Macko
Date: Fri, 26 Nov 2010 15:36
Date: Fri, 26 Nov 2010 15:36
17 lines
2550 bytes
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
Author: Łukasz 'Maly' Ostrowski
Date: Fri, 26 Nov 2010 23:01
Date: Fri, 26 Nov 2010 23:01
14 lines
2125 bytes
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
Author: GrzybSon
Date: Sat, 27 Nov 2010 20:40
Date: Sat, 27 Nov 2010 20:40
53 lines
3638 bytes
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