2009-10-16 9 views
5

Wiele osób napisało o użyciu Automappera do mapowania obiektów domenowych (modeli) w celu wyświetlenia modeli, które uważam za bardzo interesujące i przydatne, ale moje pytanie dotyczy tego, jak postępować odwrotnie. Rozumiem złożoność tego procesu i powód, dla którego Automapper nie działa w tym scenariuszu, ale muszę dużo zrobić przy wysyłaniu formularzy, szczególnie podczas aktualizacji.Kompleksowe aktualizowanie modeli w scenariuszach wysyłania formularzy i MVC

Mam model, mapuję go do modelu widoku, a następnie przedstawiam formularz użytkownikowi. Następnie formularz jest publikowany, a ponieważ modele mogą być dość skomplikowane, korzystam z niestandardowych modułów ModelBinders, aby obsłużyć odpowiedź i stworzyć nowy model, który nie będzie trwał bezpośrednio. Zamiast tego, ładuję oryginalny model z bazy danych i wywołuję metodę, aby zaktualizować ją z wysłanej z, bez przerywania czegokolwiek. Ale staje się to powtarzalne i być może istnieje lepsze podejście.

Przykłady, które widziałem, są bardzo ograniczone i naiwne, ale w naszej aplikacji możemy mieć już ponad 50 formularzy publikowania takich jak ten i rosnących.

Odpowiedz

3

Jeśli chcesz iść w innym kierunku, należy najpierw utworzyć mapę na innym kierunku, Mapper.Map()

Następnie możesz tworzyć konwertery typu (Mapper.CreateMap(). ConvertUsing()), ponieważ czasami formularze mogą być bardziej ... ciąg-y.

Następnie należy zignorować lub zastosować wartości docelowe. To może być skonfigurowane za pomocą ForMember (entity => entity.Id, opt => opt.Ignore()) lub ForMember (entity => entity.ChildCollection, opt => opt.TestinationValue()).

Wreszcie, należy użyć przeciążenia, które pobiera istniejący obiekt docelowy, Mapper.Map (dto, entity).

+0

Nie miałem na myśli wyłącznie korzystania z Automapper, ale dzięki za wspaniałą reakcję, spróbuję to jak najszybciej. –

Powiązane problemy