Thread View: alt.pl.comp.lang.csharp
2 messages
2 total messages
Started by GrzybSon
Mon, 18 Oct 2010 06:31
[NH] tabela słownikowa
Author: GrzybSon
Date: Mon, 18 Oct 2010 06:31
Date: Mon, 18 Oct 2010 06:31
33 lines
1944 bytes
1944 bytes
Witam,
jak radzicie sobie z tabelami słownikowymi?
Chodzi mi o to, że mam przykładowo tabelę Dostawa i tabelę TypDostawy.
Typdostawy to tabela słownikowa (id int, etykieta nvarchar(200)).
Teraz gdy chcę dodać nową dostawę do bazy to wykonuję taki kodzik:
using (var session = OpenSession())
{
using (var tx = session.BeginTransaction())
{
Dostawa dostawa = new Dostawa()
{
TypDostawy = session.Get<TypDostawy>((int)1);
};
session.Save(dostatawa);
tx.Commit();
}
}
Jak dla mnie nie jest to zbyt elegancki kod, poza tym wykonanie go generuje
dodatkowego selecta dla pobrania wiersza ze słownika
TypDostawy.
Jak to ładniej załatwić, powiedzmy mając enuma, który definiuje TypDostawy i
jak to zamapować?
--
Pozdro,
Maćko
Re: [NH] tabela słownikowa
Author: Łukasz 'Maly' Ostrowski
Date: Mon, 18 Oct 2010 07:36
Date: Mon, 18 Oct 2010 07:36
28 lines
1712 bytes
1712 bytes
On Mon, 18 Oct 2010 08:31:49 +0200, GrzybSon wrote: > <snip> > TypDostawy = session.Get<TypDostawy>((int)1); > <snip> > Jak dla mnie nie jest to zbyt elegancki kod, poza tym wykonanie go generuje > dodatkowego selecta dla pobrania wiersza ze słownika > TypDostawy. > Jak to ładniej załatwić, powiedzmy mając enuma, który definiuje TypDostawy i > jak to zamapować? Jeżeli masz pewność że TypDostawy z identyfikatorem o wartości 1 istnieje to możesz zastąpić to: TypDostawy = session.Load<TypDostawy>((int)1); Będziesz miał tam proxy, dopóki będziesz odpytywał tylko Id to select nie zostanie wykonany. I tak, nie powinno być problemu z mapowaniem enuma jako PK zamiast inta, żeby mieć to "mocno typowane z intellisense", zakładając oczywiście że kolekcja typów dostawy jest stała. -- Pozdrawiam, Łukasz 'Maly' Ostrowski. http://l3v.pl/
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