Rozbudowa modelu o dodatkowe pole

0

Witam serdecznie,

Jako początkująca osoba nie wiem w jaki sposób poprawnie rozwiązać poniższy problem.

Posiadam jakąś fejkową klasę modelową. Zawiera ona pola:

  • Id
  • Imię
  • Nazwisko

Oraz drugą klasę, która jest singletonem i zwraca kolekcję tych danych.

Dodatkowo potrzebuje tutaj pole IsActive, ale nie będzie go w bazie. Aplikację opieram o wzorzec Model-View-ViewModel. W jaki sposób powinno się to odbyć? Czy da się to zaprojektować tak, żeby później można było zamienić model na zupełnie inny (np. pola Nazwa, Cena) i żeby do moje sztuczne pole jakoś udawało, że tam jest?

0

Z technicznego punktu widzenia nie ma żadnych problemów. Dodajesz pole na wszystkich poziomach (W ViewModelu, Modelu, ewentualnie w DTO), dopisujesz przemapowania. Problem pojawia się na poziomie bazy danych.
Jeżeli wartość null jest dopuszczalna w nowej kolumnie to ją dodajesz po sprawie, jeżeli nie to musisz wybrać wartość domyślną dla nowej kolumny (po założeniu kolumny wartość domyślną możesz spokojnie usunąć).
Kolejnym problemem jest co zrobić z istniejącymi danymi null, albo wartość domyślna niekoniecznie jest odpowiednią wartością, tutaj należy przygotować sprytnego update'a czasami where w nim zawarty będzie zawierał tylko "id in (<lista identyfikatorów>)" a czasami będzie zawierał dziesiątki joinów wszystko zależy od logiki twojego programu.

Na koniec powiem unikaj stosowania singletonów wprost. Każdy programista przeżywał zauroczenie tą konstrukcją ale w powiem szczerze że im dłużej programuję tym mniej czuję potrzebę go używania (czasami jest to jedna klasa na projekt, czasami żadna). Najbardziej jest przykre gdy w pewnym momencie okazuje się że potrzebujesz więcej niż jednej instancji klasy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1