Kilka miesięcy temu miała swoją premierę kolejna wersja .NET, a wraz z nią również kolejna wersja Entity Framework Core. W tym wpisie chciałbym się skupić na jednej z nowości, która została dodana do Entity Framework Core, a jest nią obsługa mechanizmu Temporal Tables z SQL Server. O mechanizmie tym pisałem już kiedyś w kontekście zwykłego Entity Framework, który nie miał dla niego wsparcia. Od wersji 6 Entity Framework Core mamy oficjalne wsparcie dla Temporal...
Bazy danych i XML 1010 dni, 9 godzin, 53 minuty temu 167 źrodło rozwiń
Dziś będzie trochę o bazach danych. To nie tylko tabelki i operację CRUD, potrafią zrobić zdecydowanie więcej. Chciałbym dzisiaj przybliżyć możliwości biblioteki Entity Framework Core związaną z obsługą widoków.Czym jest widok? Zacznijmy od początku, czyli zdefiniowania czym jest widok. Zaglądając do wikipedi otrzymamy bardzo ładną definicję: Widok (perspektywa) to logiczny byt (obiekt), osadzony na serwerze baz danych. Umożliwia dostęp do podzbioru kolumn i wierszy tabel lub tabeli na podstawie zapyta...
Używanie kontenerów bardzo ułatwia lokalne programowanie. W szczególności gdy nasz projekt jest rozbudowany i wykorzystuje różne elementy infrastrukturalne, takie jak baza danych, storage, kolejki i tym podobne rzeczy. Dzięki dockerowi możemy w kilka chwil postawić lokalne środowisko do pracy bez konieczności spędzania długich godzin na instalowaniu niezbędnych komponentów. W tym wpisie pokażę Ci, w jaki sposób postawić w dockerze SQL Server, jak go skonfigurow...
Bazy danych i XML 1343 dni, 12 godzin, 36 minut temu 145 źrodło rozwiń
Working with big databases, consisting of many, many tables (like hundreds or thousands), can be really painful. Recently, this happened to me and I discovered 2 lifehacks that help me survive this hard days. Filtering tables You know the struggle when you know a part of a database table name but cannot remember the whole name? How could it be named? BasketPositions, CustomerBasketPositions or maybe PositionsOfBasket? How can you know?! Yeah, it’s the everyday struggle with huge projects! This is...
Wpis poświęcony HierarchyID w najnowszym EF.
Bazy danych i XML 1857 dni, 12 godzin, 5 minut temu 90 źrodło rozwiń
W poprzednim wpisie pokazałem Ci, jak użyć Sql Server Snapshots do resetowania stanu bazy w automatycznych testach. Innym podejściem, które możemy wykorzystać podczas pracy, jest po prostu usuwanie z bazy danych, które zostały dodane podczas wykonywania testów. Tytułowa biblioteka Respawn umożliwia realizację czegoś takiego w bardzo prosty sposób, ale ma również niestety swoje wady. Zobacz, co umożliwia i gdzie może Ci się ona przydać.Respawn Respawn (https://...
Bazy danych i XML 1910 dni, 13 godzin, 36 minut temu 102 źrodło rozwiń
W kilku ostatnich wpisach na blogu zająłem się tematem testowania WebApi z wykorzystaniem testów w Postmanie. Ostatnio mogłeś zobaczyć, w jaki sposób wykonywać automatycznie testy w Azure DevOps. Użyty w tamtym wpisie przykład był bardzo prosty i tak naprawdę nie do końca był namiastką realnej aplikacji. Nie używał on bazy danych, a dane generował dzięki bibliotece NBuilder i przechowywał je w pamięci. Przez to powrót do znanego stanu przed uruchomieniem testów...
Obok StackOverflow Driven Development czy Hype Driven Development ostatnio możemy wyróżnić też CV Driven Development oraz LinkedIn Driven Development. LinkedIn od CV Driven Development różni się tym, że jego efekty kończą jako artykuły na rzeczonym portalu z informacją co takiego fajnego zaprojektowałem/zrobiłem w pracy. Sam LinkedIn coraz częściej wygląda jak na poniższym obrazku, więc warto się zastanowić czy aby na pewno to co czytamy na sens.
Architektura 1934 dni, 12 godzin, 42 minuty temu 83 źrodło rozwiń
Korzystając z systemu kontroli wersji Git zdarza się od czasu do czasu ujrzeć warning o następującej treści „LF will be replaced by CRLF in
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 2099 dni, 13 godzin, 4 minuty temu 133 ź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 2106 dni, 13 godzin, 11 minut temu 168 ź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 2143 dni, 11 godzin, 39 minut temu 198 ź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 2193 dni, 9 godzin, 25 minut temu 213 źrodło rozwiń
W ostatnim czasie na potrzeby swojej aplikacji potrzebowałem podpiąć kontener dockerowy z SQL Serverem. Mimo że teoretycznie wydaje się to proste, spotkałem parę uprzykrzających życie problemów. Dlatego też chciałbym przedstawić wam swoje rozwiązanie. Stworzyłem je na potrzeby lokalnego developmentu i póki co jeszcze nie testowałem tego w chmurze, ale na pewno do tego dojdzie. Wtedy będzie to ...
Dzisiejszy świat opiera się na bazach danych. W ramach testów jednostkowych zewnętrzne zależności np. do bazy danych mockujemy. Co w przypadku gdy popełniliśmy literówkę w nazwie procedury lub zapytaniu SQL, albo liczba przekazanych parametrów nie zgadza się. W celu rozwiązania powyższego problemu należy zaimplementować testy integracyjne z wykorzystaniem bazy danych. Testy integracyjne nie testują reguł bizneso...
Sztuka programowania 2284 dni, 12 godzin, 24 minuty temu 66 źrodło rozwiń
Docker, SQL Server, VS Code, mssql i Mundial. Chcesz dowiedzieć się jak zarządzać bazą danych z poziomu Visual Studio Code, zapraszam do lektury.
We have many solutions for versioning data through time. One of the cleanest, most transparent and pretty effortless in my opinion are Temporal Tables which are available in MS SQL 2016+. What’s really great about that approach is that unless you need to retrieve state from the certain point in time or browse through changes in a specified time range, you can query against a versioned table in an exactly same way that you would do with any other one.
Bazy danych i XML 2413 dni, 11 godzin, 32 minuty temu 77 źrodło rozwiń
Po co nam monitoring? Ktoś może powiedzieć, że chce wiedzieć o wszystkich problemach, które pojawią się w jego systemie. Poszedłbym jednak dalej: monitoring miałby, w pewnych przypadkach, odpowiednio wcześniej sygnalizować ewentualność takich problemów. Potrzebujemy do tego odpowiedniego zestawu liczników, które zbieramy i ...
Bazy danych i XML 2539 dni, 13 godzin, 17 minut temu 77 źrodło rozwiń
Czy jako administrator baz danych zetknąłeś się z pytaniem: czy z bazą wszystko OK? Pytanie takie zwykle pada, kiedy użytkownicy aplikacji zauważają spowolnienia w pracy systemu. I jak to w takich sytuacjach bywa, trzeba znaleźć przyczynę. Właśnie diagnoza jest największym wyzwaniem: rozpoznanie, czy bieżący stan bazy danych jest przyczyną, czy raczej skutkiem powstałych problemów? Na...
Bazy danych i XML 2539 dni, 13 godzin, 17 minut temu 153 źrodło rozwiń
Jednym z najczęstszych błędów popełnianych przez developerów T-SQL’a jest tworzenie tabel bez indeksów klastrowych. Powody są różne: pośpiech, brak dobrych nawyków lub po prostu wewnętrzne przeświadczenie, że taki indeks nie jest konieczny. W tym artykule chcę udowodnić, że tworzenie takich indeksów powinno wejść nam w krew już podczas zakładania struktury nowej tabeli. Jeśli tego nie zrobimy, kon...
Bazy danych i XML 2539 dni, 13 godzin, 17 minut temu 295 źrodło rozwiń