Najbardziej popularnym ORMem w świecie .NETu jest bez wątpienia Entity Framework. Posiada on wiele wbudowanych mechanizmów ułatwiających pracę z bazą danych, ale odpokutowuje to pewnymi niedogodnościami. Nie należy on do najwydajniejszych ORMów, generuje czasami pokrętne zapytania, oraz łatwo można wpaść w tarapaty, np. przez problem N+1. Istnieją również alternatywy, jak np. nHibernate, czy Dapper! Jak sami twórcy wskazują, a są to ludzie od StackOverflow, Dapper jest królem wśród micro ORMów pod względem prostoty oraz wydajności działania. Jego zadanie polega tylko na przekształcaniu danych z jednego modelu w drugi, czyli na samej istocie działania mechanizmu ORM: mapowaniu. Nie uświadczycie tutaj wielu fajerwerków, zapytania pisze się z palca, wiec czasami trzeba się…
-
-
Brak komend do EF.Core w Package Manager Console
Problemy konfiguracyjne występują w projektach za często i są strasznie uciążliwe. Dziś napiszę o rozwiązaniu jednego z nich. Opis problemu Podczas korzystania z podejścia Code First w Entity Framework korzysta się z paru komend w Package Manager Console. Najpopularniejsze z nich to Add-Migration i Update-Database. Do tej pory, kiedy instalowałem paczkę Entity Framework komendy te były zawsze dostępne. Tym razem było inaczej, konsola zwróciła błąd: Przygotowanie programu Ze względu, że wpis na blogu dotyczy pewnego problemu wstawię kod bez większego wyjaśnienia. Zainstalowane paczki projektu dla EF Core: Kod służący do stworzenie tabeli bazy danych: Rozwiązanie Aby możliwe było korzystanie z instrukcji dostarczonych przez Entity Framwork Core w konsoli należy zainstalować…
-
Struktury w języku C#
Tworzenie i wykorzystywanie struktur jest bardzo podobne do operowania na klasach, jednak to te drugie są częściej wykorzystywane w codziennej pracy programisty. Nie każdy jednak wie, że struktury wykorzystuje niemal bez przerwy, a zaczyna już na starcie nauki programowania w języku C#, zaraz po napisaniu aplikacji typu Hello World. Dziś przedstawię Wam pojęcie struktury i różnicę pomiędzy nimi, a klasami. Pojęcie Struktura– jest to typ wartościowy, co oznacza, że wartości są przechowywane bezpośrednio w zmiennej. Podczas definiowania zmiennej system rezerwuje odpowiednią ilość miejsca w pamięci, a wartość która zostanie jej przypisana ląduje bezpośrednio do tego obszaru pamięci. Inaczej działa to w typach referencyjnych, do których zalicza się klasa. Tam zmienna…
-
Walidacja danych za pomocą DataAnnotations
Wprowadzę sobie PESEL o długości 15 znaków, a co, niech programiści sobie if’ują! W wielu projektach, jak nie w każdym, zachodzi konieczność sprawdzenia, czy dane pole spełnia określone reguły narzucone przez potrzeby biznesowe, czy po prostu przez zdrową ludzką logikę. W prostych przypadkach dozwolony zakres danych narzucony jest przez typy zmiennych w typowanym języku programowania, jakim jest np. C#. Przez to nie możemy przypisać dowolnego tekstu do zmiennej całkowitoliczbowej. Co jednak jeżeli chcielibyśmy narzucić bardziej złożone ograniczenie, czy wtedy wszystko musimy sprawdzać ręczenie? W tym wpisie przedstawię, czym jest DataAnnotations oraz gdzie znajduje zastosowanie przy budowaniu aplikacji internetowych w ASP.NET (MVC, czy też Core). Co to DataAnnotations? Data Annotations…
-
ModelState, czyli wstępna walidacja w ASP.NET Web Api
ASP.NET dostarcza nam mechanizmu wstępnej walidacji danych (sprawdzenia czy dane są poprawne), które są przesyłane w żądaniu. Programista nie musi ręcznie sprawdzać czy dane pole nie ma wartości pustej, czy długość ciągu znaków nie przekracza narzuconego limitu, bądź czy liczba mieści się w dozwolonym zakresie. Wystarczy, że użyje techniki opisanej poniżej, która jednocześnie jest bardzo prosta w użyciu. Poniższy przykład został stworzony w ASP.NET Core 2.1 Web Api. Zanim zaczniemy, będziemy potrzebować modelu danych, który pomoże zrozumieć zagadnienie. Dobrym przykładem będzie stworzenie klasy związanej z człowiekiem, dlatego też utworzymy detektywa. Detektyw posiada trzy właściwości, jednak nie mają one jeszcze sprecyzowanej dziedziny (co mogą zawierać, a co nie). Żeby dodać…