Dlaczego nie Automapper? W tym odcinku odpowiedzi na pytania: 💠 Po co jest nam mapowanie obiektów? 💠 Jakie są sposoby mapowania? 💠 Jakie mamy rozwiązania dotyczące mapowania obiektów? 💠 Co jest nie tak z Automapperem? 💠 Czy jawne/"manualne" mapowanie obiektów nie jest niezgodne z DRY i SOLID? 💠 Czym jest MappingGenerator? 💠 Jak stworzyć rozszerzenie kompilatora C#? 💠 Co popchnęło Cezarego do tego, żeby stworzyć własne rozszerzenie i ciągnąć taki pet project tak długo?
Architektura 1256 dni, 6 godzin, 24 minuty temu 94 źrodło rozwiń
In this blog post I introduce Mapping Generator - a possible design time alternative to AutoMapper.
Kiedyś bardzo lubiłem bibliotekę AutoMapper. Była ona z reguły jedną z pierwszych bibliotek, jakie zawsze dodawałem do projektu na samym początku. Pozwalała mi tworzyć mnóstwo obiektów i mapować je do woli, poświęcając na to niewiele czasu „programistycznego”. Była świetna! Aż do momentu, gdy zaczęła być jedną z największych bolączek.
Sztuka programowania 1648 dni, 5 godzin, 24 minuty temu 262 źrodło rozwiń
In this blog post, I’m going to describe how to create a tool for generating code during the build process and how I used it to create auto-synchronizing mapping classes.
Od wielu lat używam viewmodeli do przekazywania danych do widoku – niezależnie od tego, czy to aplikacja desktopowa w WPF, czy webowa w ASP.NET MVC. Do tego jeszcze Automapper do mapowania danych na viewmodele. Niestety mapowanie z wykorzystaniem metody Map obiektów z Entity Frameworka bardzo często ma swoje negatywne konsekwencje (na ogół pobieramy zbyt dużo danych do aplikacji). Jednym z rozwiązań tego problemu jest skorzystanie z metody ProjectTo z Automappe...
Bazy danych i XML 2173 dni, 3 godziny, 34 minuty temu 276 źrodło rozwiń
W bardzo wielu aplikacjach w bazie danych zapisujemy ten sam czas jaki przyszedł do nas od użytkownika w formularzu. W przypadku, gdy tworzysz aplikację na rynek polski, takie podejście może okazać się bezproblemowe, bo wszyscy jesteśmy w jednej strefie czasowej i mamy ten sam czas. Problemy zaczynają się, gdy tworzymy aplikację, w której użytkownicy są w różnych strefach . Wtedy takie podejście może się okazać bardzo problematyczne. Dlatego zaleca się, aby po...
Typy wyliczeniowy są używane do określenia jednej wartości z góry określonego zbioru. Dzięki nim możemy ułatwić sobie tworzenie kodu poprzez nadanie nazwy dla wartości, którą później używamy. Nazwa enuma musi spełniać rygory składni takich języków jak C#, dlatego potrzebujemy mechanizmu, który wyświetli ładny napisu w interfejsie użytkownika. W tym wpisie drogi czytelniku, pokaże Ci jak to zrobić małym nakładem pracy oraz przy okazji wspierać wiele języków. Zob...
A few weeks ago I posted about negative aspects of applying AutoMapper. As an alternative I suggested typing all mapping code by hand or utilize some kind of generator like T4Scaffoling or something Roslyn based. In the past I experimented with T4Scaffoling but it was quite tedious. It requires preparation of templates in T4 syntax, referencing it to the project and writing some PowerShell code to provide data for templates. There also was an issue with assembly locking. Then I tried to generate code wit...
The idea behind this blog post is pretty old but I haven’t had enough motivation to write this down till now. Recently, I’ve came across a couple of new articles about AutoMapper and I’ve been struck when I saw how people utilize AutoMapper in their projects. I’ve encountered cases when AutoMapper transforms simple thing like mapping values from object to other into a really complex problem, which results with highly complicated code only for the price of not writing mappings explicitly. Finally, I’ve fo...
Sztuka programowania 2501 dni, 3 godziny, 4 minuty temu 253 źrodło rozwiń
Siemanko Wykorzystując generyczne możliwości C# oraz bibliotekę AutoMapper do mapowania modeli na podstawie konwencji, można zaimplementować np. operacje CRUDowe dla wielu modeli bez potrzeby powtarzania kodu konkretnej implementacji dla konkretnego modelu. Ostatnio, implementując coś w rodzaju kolejki eventów oraz ich obs...
Sztuka programowania 2691 dni, 21 godzin, 46 minut temu 172 źrodło rozwiń
Have you ever heard or used AutoMapper? What a question, of course you have. And in the very unlikely scenario that you haven't, it's the object to object mapper that allows you to map probably everything. In short no more manual, boring, tedious, error-prone mapping. However, the great power comes with great responsibility. In the recent time, I had an occasion to fix 2 difficult to track bugs related to improper usage of AutoMapper. Both issues were related to the feature of AutoMapper...
Sztuka programowania 2827 dni, 2 godziny, 54 minuty temu 65 źrodło rozwiń
Automapper jest bardzo interesującą biblioteką. Może ona służyć do „przepisywania” danych (object-object).
Sztuka programowania 3043 dni, 6 godzin, 16 minut temu 288 źrodło rozwiń
Programując w ASP .NET MVC często mamy potrzebę zmapować jeden obiekt na inny, może to być np. encja pobrana z bazy danych, którą trzeba pozbawić niektórych właściwości i przekazać do dalszych warstw naszej aplikacji, lub – w prostszy ujęciu – konwersja modelu na View Model, którym napełnimy widok naszej aplikacji.
Sztuka programowania 3175 dni, 19 godzin, 18 minut temu 222 źrodło rozwiń
Programowanie jest powtarzalne. Nic z tym nie da się zrobić. Można jednak to nieco uprościć i zrzucić część rzeczy na dostępne na rynku biblioteki.
Daj się poznać 2016 3196 dni, 6 minut temu 168 źrodło rozwiń
Ale o czym dzisiaj, dzisiaj o obcisłości po angielsku w programowaniu. Słowo tight będzie jednym z bohaterów wpisu. A nawet tight coupling, czyli coś mocno wiążącego. Co tak mocno wiąże w programowaniu? Moim zdanie new jest temu winny. Wiąże bowiem ono ze sobą klienta, klasę którą korzysta z new aby zaspokoić swoje potrzeby, oraz dostarczyciela usługi, czyli klasę, która jest w stanie zaspokoić tę (tą) potrzebę.
Sztuka programowania 3545 dni, 5 godzin, 1 minutę temu 545 źrodło rozwiń
Ot taka ciekawostko z automappera, kto zna to niech czyta dalej, kto nie zna może zapoznać sie z...
Simple.Data, biblioteka o której wspomniałem w poprzednim wpisie, dostarcza nam możliwość dynamicznego operowania na bazie danych. Co, jeśli chcemy zmapować wyciągnięte dane np. na konkretny ViewModel?
Czasami mam takie dni, że mam dość. Wszystko się sypie a ja sam nie wiem w co włożyć ręce (szczególnie jak przestaje działać coś na czym polegam od dłuższego czasu i coś co do tej pory nie sprawiało mi żadnych problemów). Pewnego pięknego poniedziałkowego ranka przychodzę do pracy i od progu słyszę, że po tym jak w piątek zrobiłem pusha to kod przestał się kompilować. Wprost “uwielbiam” takie rozpoczęcie tygodnia. Oczywiście jestem przekonany, że kod działa, ale jestem przecież tylko człowiekiem...
Od dłuższego czasu korzystam z automappera, jest to genialne rozwiązanie gdy trzeba mapować jeden obiekt na drugi. Gdy w klasach, z i do której chcemy mapować wszystkie typy właściwości/pól i ich nazwy się zgadzają nie trzeba robić praktycznie nic, gdy pojawiają się inne nazwy, wystarczy tylko wskazać że pole właściwość W w klasie A to właściwość X w klasie B i tyle, raz i spokój do końca projektu. Gdy typy się nie zgadzają, można skorzystać z konwerterów, zarówno na poziomie właściwości jak i całych kla...
Wykorzystanie Automappera ma swoje uzasadnienie i często-gęsto można je uznać za "kod pożądany". Pomimo swych zalet ma jednak również wady. Jedną z nich są z pewnością dość długaśne instrukcje wykonujące mapowanie: 1: var mapped = Mapper.Map, IEnumerable>(source);
Bazy danych i XML 4976 dni, 21 godzin, 51 minut temu 119 źrodło rozwiń