A következő címkéjű bejegyzések mutatása: automapper. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: automapper. Összes bejegyzés megjelenítése

2012. augusztus 3., péntek

Automapper és a paraméteres konstruktorok

Jó cucc ez az AutoMapper, de jó ha az ember miután megismerte, jól elteszi a trükkös megoldások linkjeit.
Ebből most egy szemelvény, egy olyan probléma amire sokáig kerestem a választ. Adott egy régi és egy új objektum hierarchia, ide-oda mappelünk.

A "régi" objektumhierarchiában van egy ilyen:


És az új modellben pedig egy ilyen:


A feladat a következő Állítsuk be a mappelést oda-vissza. Az egyik irány tök jó, amikor a régiből hozunk létre újat, ott egy trükk van amikor beállítjuk a map struktúrát.

A másik irány egy kicsit bonyolultabb, főleg mert a child osztálynak nincs paraméter nélküli konstruktora, ráadásul a paraméteres konstruktor a szülő osztály referenciáját várja. Nekem több órába telt a próbálkozás, kezdtem extension method-okkal, 20-30 soros lambda kifejezésekkel, de vagy a mapping konfig volt hibás, vagy folyton dobta a hibaüzenetet, hogy "OldChildType has no parameterless constructor". Vagyis nem tudja megkreálni, akárhogy próbálkoztam a lambda hegyekkel.
Aztán egyszer csak egy stackoverflow bejegyzés volt ami megmutatta a helyes utat, és kb 2 sor az egésznek a kulcsa.


Szóval ajánlom mindenkinek a figyelmébe a UseDestinationValue -t mint kulcsszót, érdemes ráguglizni hogy mit csinál.

2012. július 17., kedd

AutoMapper

Van egy jelenlegi rendszer, amiben sok saját típus van. Zöme azokból az időkből maradt meg, amikor még nem volt nullozható datetime, int, stb. Ezen típusokból összerakott osztályok alkotják a mostani domain model-t.

Most az MVC -nek létrehozott Model DTO objektumait kellene előállítani valahogy okos módon, anélkül, hogy kézzel megírnánk minden oda-vissza mappert.

Ezt néztük ki egy lehetséges jó megoldásnak:
http://www.codeproject.com/Articles/61629/AutoMapper

Ismeri valaki ezt az AutoMapper nevű cuccot? Használtátok? Van valami, amire vigyázni kell, különösen szivató?