Na podstawie klasy stworzyłem tabelę w MSSQL i dodatkowo procedurę do niej zapisującą.
I straciłeś czas.
Serio, poświeć klika dni na naukę jakiegoś ORM wspierającego podejście code-first, np. Entity Framework albo Fluent NHibernate. Potem już nigdy nie będziesz tracił czasu na robienie tego, co od dawna można zrobić automatycznie.
Ale co będzie w przypadku jezeli raptownie klient zażyczy sobie mieć te dane i funkcjonalności na www (inna technologia niż .NET),tablecie.
I myślisz, że na całym świecie jedynym stosowanym rozwiązaniem tego problemu jest wpychanie walidacji do bazy danych?
Jeśli przewidujesz, że tak może się stać, to powinieneś od razu tworzyć aplikację wielowarstwową, i logikę biznesową, walidację danych oraz operacje bazodanowe umieścić w jakichś serwisach webowych. Wtedy możesz sobie do tego podpiąć dowolnego klienta - aplikację Javową na Androida, stronę WWW w PHP, albo program desktopowy w Delphi...
A jeśli nie chcesz serwisów webowych, to wystarczy rozsądna architektura aplikacji (np. oparta o wzorzec MVP), dzięki czemu zmiana typu aplikacji (desktop, konsola, www...) jest banalna, bo wystarczy właściwe dopisać nowe GUI, cała reszta zostaje bez zmian.
Po zaprogramowaniu klasy, tabeli -właściciel dnia kolejnego okazało się, że właścicielem tak naprawdę może być kilka osób , i te kilka osób formalnie jest nazwane właśicielem. W związku z tym zmienia się koncepcja.
A masz w ogóle gdzieś spisane wymagania funkcjonalne tej aplikacji? Bo jeśli nie usiedliście z klientem, i nie porozmawialiście dokładnie o tym, czego on chce, i nie spisaliście tego, to takich kwiatków będziesz miał masę.
Powstaje klasa osoba i oddzielna klasa właściciel zawierająca jedną lub kilka osób.. Każda z osób ma oddzielne adresy, telefony, lecz właściciel ma dodatkowe dane w postaci np jednego adresu do korespondencji.
A to nie wystarczy po prostu powiązać lokal z kolekcją właścicieli?
Najgorsze jest jednak to, że klient chce zobaczyć jak działa mechanizm wyszukiwania.. i tu , żeby zasymulować specyficzne wyszukiwanie prototyp staje się dość skomplikowany..
No więc trzeba napisać klasę wyszukującą dane w pewnej kolekcji obiektów. W ramach prototypu tą kolekcją będzie jakaś sztywna lista danych, a później bez problemu podmienisz ją na kolekcję wczytaną z bazy. Żaden problem.