W mojej aplikacji ASP.NET MVC mam dość złożoną stronę edycji, która łączy wiele modeli w jeden widok.ASP.NET MVC - Czy powinienem użyć wzorca repozytorium do napisania ViewModels do bazy danych lub przekonwertowania ich na modele?
Używam wzorca ViewModel do łączenia wszystkich tych informacji i przedstawienia jednego spójnego obiektu do widoku.
Jako przykład, mój ViewModel struktura jest mniej więcej tak:
CompanyId
CompanyName
List<Employee> Employees
List<ContactMethod> ContactMethods
Przedmiotem Pracownik ma kilka podstawowych właściwości oraz preferowaną metodę kontaktu.
Na stronie edycji użytkownik otrzymuje wszystkich pracowników firmy, którzy mogą dodawać i usuwać (przy użyciu javascript), a także edytować dane pracowników. Lista ContactMethods służy do wypełniania listy rozwijanej dla każdego pracownika.
Z powodzeniem przetłumaczyłem moje modele (przeczytane z bazy danych) na ten ViewModel iz powrotem, więc po edycji pozostało mi ViewModel reprezentujący aktualny stan pracowników tej firmy.
używam repozytorium wzór do komunikowania się z bazą danych, więc moje pytanie brzmi, powinienem zadzwonić bezpośrednio do CompanyRepository, przechodzącej ViewModel, czy powinienem konwertować ViewModel z powrotem do modelu obiektów pierwszy przed użyciem repozytorium zapisać je w bazie danych?
W skrócie, , czy repozytorium powinno wiedzieć o moich obiektach ViewModel?
Jeśli tak jest (i to jest w porządku), muszę utworzyć te modele pracowników, usunąć wszystkich obecnych pracowników z tej firmy, a następnie dodać nowe modele pracowników ... lub ... pobrać wszystkie modele pracowników z bazy danych i dopasuj je przed dodaniem, usunięciem i edytowaniem w razie potrzeby. Czy to brzmi dobrze? – Damovisa
@ Daamo: możesz to zrobić. Zamiast tego zachowałbym te informacje podczas edycji. W swoim ViewModelu zachowaj trzy listy: CreatedEmployees, EditedEmployees, DeletedEmployees. – manu08
@ manu80 - Rozumiem, jak to może działać, ale może być nieco skomplikowane. Interfejs musiałby się trochę zmienić, aby uwzględnić te trzy kolekcje - nawet jeśli zmienia się tylko javascript. – Damovisa