Wpis poświęcony HierarchyID w najnowszym EF.
Bazy danych i XML 38 dni, 8 godzin, 24 minuty temu 77 ź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 84 dni, 11 godzin, 14 minut temu 84 ź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 219 dni, 9 godzin, 57 minut temu 163 ź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 252 dni, 9 godzin, 38 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 259 dni, 8 godzin, 58 minut temu 168 ź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 273 dni, 9 godzin, 19 minut temu 199 ź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 280 dni, 9 godzin, 22 minuty temu 123 źrodło rozwiń
DDD - Domain Model Encapsulation and Persistence Ignorance with Entity Framework 2.2
Sztuka programowania 301 dni, 7 godzin, 55 minut temu 154 ź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 302 dni, 7 godzin, 27 minut temu 195 źrodło rozwiń
Simple .NET Core REST API CQRS implementation with raw SQL and DDD - Kamil Grzybek
Architektura 308 dni, 7 godzin, 25 minut temu 201 ź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 314 dni, 23 godziny, 43 minuty 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 337 dni, 7 godzin, 17 minut temu 263 ź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 378 dni, 7 godzin, 38 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 434 dni, 8 godzin, 51 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 448 dni, 9 godzin, 2 minuty temu 238 ź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 464 dni, 8 godzin, 58 minut temu 108 ź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 472 dni, 9 godzin, 3 minuty temu 148 źrodło rozwiń
Dzisiejszy wpis jest zainspirowanym jednym z ostatnich code review jaki robiłem. Zauważyłem, że gdy pracujemy z Entity Framework często niektóre rzeczy zaczynamy robić nieefektywnie w stosunku do tego, jakbyśmy zrobili to w chociażby w przypadku ADO.NET. Taką właśnie czynnością jest aktualizowanie oraz usuwanie obiektów z bazy.Aktualizacja obiektu z jego pobraniem Standardowo, gdy zaczynamy uczyć się pracować z Entity Framework, do aktualizacji obiektu możemy ...
Bazy danych i XML 525 dni, 8 godzin, 52 minuty temu 191 źrodło rozwiń
Posted on by Adam Łepkowski In the first post, I described query execution steps that can be potentially improved when the query is executed. In this third article, I will focus on the second phase named “Request to a database”. I will show you how to solve the following problem: “Each create and update action send a SQL query in a separate round-trip. If your application requires 30ms to connect to a database and you create for example ten new objects, then application spends just 300ms on connecting ...
Sztuka programowania 570 dni, 9 godzin, 31 minut temu 99 źrodło rozwiń
Krótko o unchecked, unsigned i problemach z Entity Frameworkiem...
Sztuka programowania 594 dni, 7 godzin, 51 minut temu 42 źrodło rozwiń