Jaki jest zwykły sposób aktualizowania encji NHibernate z modelu widoku?

Mam edytor modelu widoku, w którym są wyświetlane wszystkie moje dane, które są pobierane za pośrednictwem repozytorium, które zwraca DTO. Właściwości DTO są następnie mapowane do właściwości mojego modelu widoku. Mogę zaktualizować moją jednostkę, jeśli pobiorę ją ponownie, zaktualizuję wymaganą właściwość select

Czy jest lepszy sposób?

2
gcso 7 czerwiec 2011, 21:11

2 odpowiedzi

Najlepsza odpowiedź

Moim zwykłym podejściem jest posiadanie EditXViewModel, który obsługuje śledzenie zmian dla XViewModel i zawiera SaveCommand, który wykonuje rzeczywistą aktualizację encji. Dzięki temu użytkownicy mogą cofnąć wprowadzone zmiany bez konieczności pamiętania, jakie były w bazie danych (zmniejsza to również liczbę transakcji).

Poniższe artykuły były niezwykle pomocne, gdy zacząłem podążać tą samą ścieżką:

1
user7116 7 czerwiec 2011, 21:23
O ile nie brakuje mi czegoś oczywistego, te artykuły nie mówią o robieniu modelu widoku z edytowanymi danymi i zapisaniu go. Czy jedyną opcją jest poinformowanie NHibernate, aby pobrał jednostkę według identyfikatora, wprowadzając zmiany z modelu widoku, a następnie je zapisując? To jedyna część, która mnie dezorientuje.
 – 
gcso
7 czerwiec 2011, 21:40
@gcso: Ach, to trochę wyjaśnia sprawę. Zwykle w moim SaveCommand ładuję dany element, wprowadzam zmiany, a następnie zatwierdzam transakcję.
 – 
user7116
7 czerwiec 2011, 21:48
@gcso: Alternatywnie, jeśli nie utrzymujesz otwartej sesji, możesz wydać aktualizację sesji (aby ją ponownie dołączyć) na obiekcie modelu, wprowadzić zmiany, a następnie zatwierdzić i zamknąć sesję.
 – 
user7116
7 czerwiec 2011, 21:53

Możesz użyć AutoMappera, co jest szczególnie łatwe, jeśli modele widoku ściśle pasują do encji.

Jak po prostu zmapować NHibernate ISet do IList za pomocą AutoMappera?

3
Community 23 maj 2017, 15:26