Dapper.Extensions - ClassMapper nie mapuje mi kolumn na Insert()

0

Witam.
Czy ten micro-orm nie nadaje się do takich zabiegów? W bazie mam kompletnie inne nazwy kolumn (są bardzo "brzydkie") i chciałbym zastosować w miarę możliwości swoje. I oczywiście działa na pobieraniu danych, ale na Insert() z biblioteki Dapper.Contrib wrzuca mi nazwy z klasy... Korzystanie z EF mija się kompletnie z celem. Rozumiem, że jeśli dalej chce używać Dappera to muszę skorzystać z Execute() i klepać pełne inserty ręcznie?

PS.
Dapper.FluentMap też nie działa.

2

Dapper.Contrib i DapperExtensions nie są ze sobą powiązane, nic więc dziwnego, że Dapper.Contrib wali ClassMapper i jego konfiguracja. A Dapper.Contrib nie wspiera customowych nazw kolumn. Inna sprawa jest dlaczego piszesz o Insercie z Dapper.Contrib skoro wg dokumentacji DapperExtensions ma swój?

Ostatecznie zrobiłbym dwie klasy - jedną z dokładnymi nazwami kolumn jak w bazie, jedną z oczekiwanymi i mapper między nimi.

0

Czyli zadziała mapowanie jeśli użyje inserta z DapperExtensions?

Dwie klasy może i są dobrym pomysłem, ale jak to między sobą zmapować? Po stronie klienta chce mieć i na select i na insert obiekty z moimi nazwami kolumn. Jak zrobić z "mojego" obiektu obiekt z nazwami propertek z bazy?

2

Ja bym spodziewał się, że Insert z DapperExtensions zadziała, najłatwiej sprawdzić w praktyce.

Co do mapowania to i tak to mapowanie musiałoby istnieć czy przez jakąś klasę czy przez atrybuty, więc zrobienie takiej samej mapy w Automapperze (i użycie ReverseMap) to żaden koszt, oprócz dodania Automappera.

0

Ok, insert z DapperExtensions zadziałał. Nie doczytałem, że ma swój insert i korzystałem cały czas z tego z Contrib. Ostatnie pytanie - pod jakimś względem AutoMapper jest lepszym rozwiązaniem niż DapperExtensions?

2

IMHO jest gorszym, bo to dodatkowa zależność, która jak widać jest Ci niepotrzebna, ale to bardziej generyczne rozwiązanie do tworzenia jakichkolwiek mapowań między klasami. Skoro DapperExtensions samo wspiera obsługę mapowania kolumn to nie ma potrzeby go używać (ani innej biblioteki do mapowań, bo Automapper nie jest jedyny).

Równie dobrze można byłoby napisać samemu metody do mapowań (albo je wygenerować, są takie pluginy do VS).

Edit.
W sumie z drugiej strony mając Automappera lub swoje mapowania można by nie korzystać z DapperExtensions, jeśli tylko do tego było Ci to potrzebne, a chyba funkcjonalność Dapper.Contrib i Dapper.Extensions jest podobna. W takim razie kwestia gustu albo przeprowadzenia benchmarków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1