Pokazywanie postów oznaczonych etykietą mapowanie. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą mapowanie. Pokaż wszystkie posty

sobota, 6 września 2008

Sposób mapowania tabeli - Foreing Key Mapping

[Szybki post]

Odwzorowanie do klucza obcego "Odwzorowuje asocjacje między obiektami jako klucz obcy tabeli", hmm a po ludzku można to przedstawić tak, że:

Jeśli mamy tabele:

Owoc
id : int
nazwa : varchar

i

Koszyk
id : int
owoc_id : int
nazwa : varchar

Oczywiście tutaj występuje asocjacja "Owoc znajduje się w koszyku"

Aby to odwzorować Foreign Key tworzymy 2 klasy:

class Owoc
{
public int Id { get; set; }
public string Nazwa { get; set; }
}


i

class Koszyk
{
public int Id { get; set; }
public int OwocId { get; set; }
public string Nazwa { get; set; }
}


Jak widać teraz asocjacja jest "wykonywana" przez Owoc.Id --- Koszyk.OwocId, czyli tak na prawdę przez klucz obcy.

Wsadzenie owoca do koszyka będzie wyglądało w taki sposób:
Owoc jablko = new Owoc() { Id = 1, Nazwa = "Jabłko" };
Koszyk koszyk = new Koszyk() { Id = 1, OwocId = jablko.Id, Nazwa = jablko.Nazwa };


Oczywiście jest to przypadek kiedy koszyk jest na prawdę mały ;) i można do niego wsadzić tylko JEDEN owoc :)

II System płacowy (cz. 3) - Model dziedziny (Mapowanie)

Skoro mamy już warstwę dostępu do danych, to przyszedł czas na zrobienie modelu dziedziny.

Najpierw musimy się zastanowić jakie tabele w bazie będziemy mieli hmm

1. Zawód - będą przechowywane tutaj nazwy zawodów
2. Pracownik - jak się nie trudno domyśleć będą tutaj pracownicy
3. Przepracowane godziny- ilość przepracowanych godzin

To chyba tyle (przynajmniej na teraz).

Bierzmy się zatem do stworzenie modelu dziedziny.

A tak w ogóle to co to jest ten cały model? Można skrócić wywód ;) i zapisać go w jednym zdaniu: Model dziedziny są to obiekty, które modelują jakąś dziedzinę (wow odkrycie ;)). U nas będą to po prostu zmapowane (jeden do jednego) tabele.

Okey skoro już wiemy co to jest, zatem przejdźmy do akcji. Ale pierwsze... czas na obiad ;)

[po 30 min. przerwy obiadowej nasz zespół pełny (jedzenia ;)) zapału wkracza do pokoju by kontynuować pracę]


Na czym to skończyliśmy hmm... coś tam poudawaliśmy, pogadaliśmy sobie potem była przerwa... a tak! mapowanie tabel :)

Użyjemy sposobu mapowania: Foreign Key Mapping

Ale zaraz na razie nie mamy czego mapować, musimy utworzyć tabele:

zawod
id : int,
nazwa : varchar

pracownik
id : int,
imie : varchar
zawod_id : int

przepracowane_godziny
id : int,
pracownik_id : int
ilosc_godzin : int
data : dateTime

Mapnijmy to ;)

Zawód:
public class Zawod
{
public int Id { get; set; }
public string Nazwa { get; set; }

public Zawod(int id, string nazwa)
{
this.id = id;
this.Nazwa = nazwa;
}
}


Pracownik:
public class Pracownik
{
public int Id { get; set; }
public string Imie { get; set; }
public int ZawodId { get; set; }

public Pracownik (int id, string imie, int zawodId)
{
this.Id = id;
this.Imie = imie;
this.ZawodId = zawodId;
}
}


Przepracowane godziny:
public class PrzepracowaneGodziny
{
public int Id { get; set; }
public int PracownikId { get; set; }
public int IloscGodzin { get; set; }
public DateTime Data { get; set; }

public PrzepracowaneGodziny(int id, int pracownikId, int iloscGodzin, DateTime data)
{
this.Id = id;
this.PracownikId = pracownikId;
this.IloscGodzin = iloscGodzin;
this.Data = data;
}
}


Job done...