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...
Bazy danych i XML 653 dni, 19 godzin, 8 minut temu 247 źrodło rozwiń
Ciężko czyta się grafy w postaci tekstowej. Znacznie lepsze jest do tego pismo pierwotne jakim są obrazki. Jeśli miałeś kiedyś problem z wizualizacją grafu w bibliotece GraphFrames na Apache Zeppelin to zapraszam do zerknięcia w kod.
Bazy danych i XML 699 dni, 19 godzin, 32 minuty temu 32 ź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 741 dni, 19 godzin, 23 minuty 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 748 dni, 18 godzin, 42 minuty temu 169 źrodło rozwiń
Bazy danych SQL LIKE – Kiedy Twój serwer płonie cz. 1 Większość projektów, w których brałem udział posiadało funkcjonalność wyszukiwania tekstowego. We wszystkich z nich było to zrealizowane klauzulą LIKE w SQL. Często ten element aplikacji stawał się wąskim gardłem i redukował responsywność aplikacji. Kiedy serwery Więcej…
Bazy danych i XML 750 dni, 18 godzin, 25 minut temu 143 ź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 762 dni, 19 godzin, 3 minuty 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 769 dni, 19 godzin, 7 minut temu 129 źrodło rozwiń
W dwóch ostatnich wpisach na blogu omawiałem zapis historii zmian danych w aplikacji z wykorzystaniem mechanizmu Audit z Entity Framework Plus. Mechanizm tamten działał w momencie, gdy korzystaliśmy z Entity Framework. Jednak nie zawsze chcemy lub możemy korzystać z tego ORMa. Dlatego w dzisiejszym wpisie chcę Ci pokazać mechanizm, który działa zupełnie inaczej i jest dostępny w samym silniku SQL Server. Mechanizm ten nazywa się Temporal Tables i jest dostępny ...
Bazy danych i XML 776 dni, 19 godzin, 14 minut temu 158 źrodło rozwiń
W poprzednim wpisie pokazałem, w jaki sposób zapisać historię zmian obiektów w Entity Framework z wykorzystaniem mechanizmu Audit z Entity Framework Plus. W dzisiejszym wpisie pokażę, w jaki sposób skonfigurować ten mechanizm, aby zapisywał te informacje, których potrzebujemy, w odpowiedni sposób.Modyfikacja przykładu W tym wpisie będę bazował na przykładzie z wcześniejszego wpisu, ale go odrobinę zmieniłem. Do klasy Product dodałem dwie nowe właściwości (Des...
Bazy danych i XML 783 dni, 18 godzin, 45 minut temu 93 ź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 791 dni, 17 godzin, 11 minut temu 196 źrodło rozwiń
Większość projektów, w których brałem udział posiadało funkcjonalność wyszukiwania tekstowego. We wszystkich z nich było to zrealizowane klauzulą LIKE w SQL. Często ten element aplikacji stawał się wąskim gardłem i redukował responsywność aplikacji. Kiedy serwery dalej płoną, opiszę tutaj po pokrótce kilka alternatyw dla tego rozwiązania.
Bazy danych i XML 813 dni, 17 godzin, 42 minuty temu 196 ź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 826 dni, 17 godzin, 1 minutę temu 268 źrodło rozwiń
Tworząc aplikację, wcześniej czy później będziemy musieli zaimportować lub wyeksportować jakieś dane. Jednym z formatów, który prawdopodobnie będziemy musieli obsłużyć, będzie plik csv. Można taki import lub eksport zrobić ręcznie, korzystając z takich metod klasy string, jak Join lub Split. Z drugiej strony możemy skorzystać z czegoś gotowego. W swoich projektach, gdy mam pracować z plikami csv, wykorzystuję bibliotekę CsvHelper (https://joshclose.github.io/Cs...
Bazy danych i XML 846 dni, 17 godzin, 37 minut temu 143 źrodło rozwiń
Cześć. Dziś postaram się opisać, jak zmigrowałem dosyć sporą ilość danych (110 mln wierszy) z SQL Servera do Elasticsearcha.
Bazy danych i XML 863 dni, 15 godzin, 28 minut temu 209 ź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 867 dni, 17 godzin, 22 minuty temu 193 źrodło rozwiń
Using .NET Database Project and DbUp library for database management.
Bazy danych i XML 869 dni, 17 godzin, 26 minut temu 67 źrodło rozwiń
Description of most common database change management approaches.
Bazy danych i XML 876 dni, 17 godzin, 29 minut temu 81 źrodło rozwiń
Bardzo lubię wykorzystywać Entity Framework w swoich projektach. W szczególności za łatwość i szybkość tworzenia kodu (na przykład za opisywany ostatnio mechanizm migracji). Ale, żeby nie było tak różowo, Entity Framework ma również swoje problemy. Głównie są one związane z wydajnością. Szczególnie, że niektóre operacje, który wykonalibyśmy w czystym SQLu jednym prostym zapytaniem, w Entity Framework wymagają wielu operacji na bazie danych. Taką operacji jest ...
Bazy danych i XML 882 dni, 17 godzin, 49 minut temu 185 źrodło rozwiń
Cześć. dzisiaj chciałbym skupić się na trochę innym temacie niż ostatnio. Pomówimy o bazach danych. A dokładniej o rozwiązaniu które dostarcza Azure, zwanym read scale-out replicas. Zanim jednak przejdę do meritum, chciałbym wam przestawić powód dla którego się tym zainteresowałem. Wszystko zaczęło się od naszego firmowego projektu. Jako że projekt już jakiś czas istnieje, pojawiła się naturalna potr...
Bazy danych i XML 883 dni, 16 godzin, 20 minut temu 33 źrodło rozwiń
Konkretne przypadki które warto znać w temacie konwersji konceptualnego modelu danych (ERD) do modelu fizycznego. Wersja polska i angielska.
Bazy danych i XML 896 dni, 17 godzin, 48 minut temu 47 źrodło rozwiń