We are already in the second half of 2020 and a lot of books related to .NET technology have been published. I decided to collect these positions in one place for you. I will mention here some of them that get the best reviews and seem worth reading in my opinion.
P. RoguszewskiLeave a comment Hey Guys! As You maybe know from C# 8, every class with implement interface IAsyncDisposable can be disposed of with clause await using. It’s looks pretty, modern, even very good IDE like Rider show tips Use await using what harm could there be? The answer is everything. In my case, it was a situation related to very popular ORM library EntityFramework Core, version for PostgreSQL (efcore.pg). I have some background services, lovely timers, which every X time send SQL dat...
Sztuka programowania 225 dni, 20 godzin, 58 minut temu 60 źrodło rozwiń
W ramach urlopu i siedzenia w domu postanowiłam zaprogramować coś ciekawego w celu poszerzenia swoich umiejętności dotyczących m.in. .NET Core i Web API. Tak powstał pet projekt MyNozbe oparty na Nozbe. W trakcie programowania natknęłam się na ciekawy problem dotyczący Entity Frameworka, którym chciałam się z Wami podzielić.
Bazy danych i XML 275 dni, 21 godzin temu 136 źrodło rozwiń
Wpis poświęcony HierarchyID w najnowszym EF.
Bazy danych i XML 485 dni, 19 godzin, 11 minut temu 81 źrodło rozwiń
Już kiedyś opisywałem na tym blogu, że jednym z większych problemów, które widzę w projektach moich kursantów, są migracje bazy danych. Kilka miesięcy temu opisywałem trzy różne podejścia: migrację w Entity Framework, Fluent Migratora oraz DbUp. Podejścia te, jak sądzę, pokrywają większość przypadków, które możesz mieć w swojej aplikacji. Kolejnym problemem związanym z migracjami jest ich uruchamianie. O ile w jakimś projekcie jest już użyty jakiś mechanizm (n...
Bazy danych i XML 531 dni, 22 godziny, 1 minutę temu 85 źrodło rozwiń
AsNoTracking()is a powerful method from DbExtensions class. And for sure – the method you should know and use 😉.Why should I use it? In short – when we call AsNoTracking(), less data is cached and tracked (we will talk about it later). And of course, the more records we retrieve from the database, the more RAM we spare.
Sztuka programowania 666 dni, 20 godzin, 44 minuty temu 166 źrodło rozwiń
Tak jak zapowiedziałem w poprzednim wpisie, w tym również będę kontynuował opisywanie biblioteki Entity Framework Plus, która rozszerza Entity Framework o przydatne funkcjonalności. Tym razem skupimy się na dwóch. Pierwszą będzie cache drugiego poziomu, natomiast drugą grupowanie wykonywania zapytań w jednej operacji na bazie z wykorzystaniem funkcji Future. W przykładzie będziemy bazowali na demie z poprzedniego wpisu o filtrowaniu w Entity Framework Plus. Dl...
Bazy danych i XML 699 dni, 20 godzin, 26 minut temu 73 źrodło rozwiń
Entity Framework jest dość przyjemnym narzędziem do pracy z danymi w aplikacji. Prawie każdy, kto spróbował w nim pracy, nie ma za dużej ochoty wracać do pisania zapytań w czystym SQLu. Ale niestety Entity Framework ma też swoje problemy, o których już nieraz pisałem. Na szczęście mamy takie firmy jak np. ZZZ Project, które tworzą biblioteki rozwiązujące te problemy. W tym wpisie chciałbym przedstawić Ci kolejną funkcjonalność darmowej biblioteki Entity Framew...
Bazy danych i XML 706 dni, 19 godzin, 46 minut temu 169 źrodło rozwiń
W poprzednim wpisie pokazałem Ci, w jaki sposób można dodać wsparcie dla Temporal Table w Entity Framework. Zaproponowane rozwiązanie nie jest idealne i ma swoje problemy. W dzisiejszym wpisie będę chciał Ci pokazać, jak rozwiązać część problemów z wykorzystaniem interceptorów. Umożliwią one modyfikowanie zapytań, które są wykonywane w serwerze bazy danych. Dzięki temu możemy obchodzić niektóre problemy w pracy z Entity Framework.Rozbudowanie przykładu W tym w...
Bazy danych i XML 720 dni, 20 godzin, 6 minut temu 201 źrodło rozwiń
W poprzednim wpisie pokazałem Ci, jak działa w SQL Server mechanizm Temporal Tables. Dzięki niemu możemy w prosty sposób bezpośrednio w samej bazie danych zapisywać historię zmian rekordów. O ile z użyciem tego w czystym SQL (np. za pomocą ADO.NET, Dapper lub innego Micro ORM) nie ma większych problemów, to już w przypadku Entity Framework są. W teorii standardowy Entity Framework nie wspiera Temporal Table. Co do wersji core – widziałem, że coś tam już jest, a...
Bazy danych i XML 727 dni, 20 godzin, 10 minut temu 129 źrodło rozwiń
DDD - Domain Model Encapsulation and Persistence Ignorance with Entity Framework 2.2
Sztuka programowania 748 dni, 18 godzin, 43 minuty temu 157 źrodło rozwiń
Historia zmian danych w aplikacji wcześniej czy później pojawi się w każdym projekcie. Do tego problemu można podejść na różne sposoby – możemy samemu coś wymyślić lub skorzystać z czegoś gotowego. W przypadku gdy korzystamy z Entity Framework, możemy użyć mechanizm audytu z darmowego rozszerzenia Entity Framework Plus. W dzisiejszym wpisie pokażę podstawy korzystania z tego mechanizmu, natomiast za tydzień rozbudujemy jego możliwości.Problem W tworzonych prze...
Bazy danych i XML 749 dni, 18 godzin, 14 minut temu 196 źrodło rozwiń
Simple .NET Core REST API CQRS implementation with raw SQL and DDD - Kamil Grzybek
Architektura 755 dni, 18 godzin, 13 minut temu 205 źrodło rozwiń
Przez ostatnie kilka miesięcy moją uwagę, w wolnym czasie, zabierał mi Domain Driven Design. Wieczory umilała mi lektura Evansa, Vernon-a, Folwer-a. Pogłębianie wiedzy dało mi do myślenia. Zacząłem się zastanawiać jak wygląda domena mojego projektu i w jaki sposób mogę ją zamodelować przy pomocy kodu. W tym artykule chciałby Ci, mój drogi czytelniku, przedstawić trzy sposoby modelowania encji jakie towarzyszyły mi podczas mojej kariery programisty. Na wstępie zaznaczę, że nie jest to kolejny wstęp do DD...
Sztuka programowania 762 dni, 10 godzin, 31 minut temu 195 źrodło rozwiń
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 784 dni, 18 godzin, 5 minut temu 268 źrodło rozwiń
W ostatnim wpisie poruszyłem temat testowania i w dzisiejszym wpisie zostaniemy przy tym temacie. O ile z testowaniem warstwy logiki biznesowej na ogół nie mamy problemów, to już dużo gorzej wygląda to z warstwą dostępu do danych. Entity Framework z pudełka nie umożliwia prostego pisania testów jednostkowych. Są różne rozwiązania tego problemu. Część osób idzie tak naprawdę w testy integracyjne i wykonuje zapytania na realnej bazie. Część osób korzysta z baz da...
Bazy danych i XML 825 dni, 18 godzin, 25 minut temu 193 źrodło rozwiń
W obecnych czasach bardzo rzadko tworzy się aplikacje, które nie korzystają z bazy danych. Gdzieś trzeba zapisać dane. Od jakiegoś czasu coraz bardziej popularne stają są bazy nierelacyjne, ale dalej najczęściej używamy baz relacyjnych, takich jak na przykład SQL Server. Jednym z problemów z jaki musimy się zmierzyć jest zmiana schematu bazy danych na przestrzeni czasu. A to musimy dodać miejsce na nowe dane. Usunąć już istniejące. Czy też zmienić strukturę, ab...
Bazy danych i XML 881 dni, 19 godzin, 39 minut temu 170 źrodło rozwiń
Entity Framework jest bardzo fajnym narzędziem bardzo ułatwiającym pracę z bazami danych. Budowanie zapytań SQL na podstawie Linq, tworzenie struktury bazy danych na podstawie obiektów w C#, czy mechanizm migracji, powodują, że wielu programistów .NET wybiera Entity Framework. Niestety Entity Framework ma również swoje ciemne strony. Wystarczy chociażby wrócić do wpisu, w którym poruszałem problem aktualizowanie oraz usuwania danych. Pracując z Entity Framewor...
Bazy danych i XML 895 dni, 19 godzin, 50 minut temu 242 źrodło rozwiń
Z MongoDB pierwszy raz zetknąłem się kilka miesięcy temu, kiedy to zacząłem projekt właśnie osadzony w klimacie tej bazy danych. Jako .NET-owiec pracowałem wcześniej tylko z relacyjnymi bazami danych SQL, był to głównie MSSQL wraz ze środowiskiem SMS, czyli Server Management Studio. MongoDB zrobiło na mnie pozytywne wrażenie, a o tym
Bazy danych i XML 911 dni, 19 godzin, 46 minut temu 109 źrodło rozwiń
Od czasu do czasu musimy wstawić do bazy wiele rekordów na raz, najczęściej w przypadku importu danych. Jest wiele sposobów na wykonanie tej czynności, ale najprościej stworzyć DbContext, dodać elementy do kolekcji, a następnie zapisać za pomocą SaveChanges. Gdy korzystamy z Entity Framework 6, istnieje kilka zasad, których powinniśmy przestrzegać, aby wydajnośc rozwiązania była odpowiednia ...
Bazy danych i XML 919 dni, 19 godzin, 51 minut temu 149 źrodło rozwiń