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...
Strona głównaUżytkownik
szymio11 | użytkownik
Bazy danych i XML 1890 dni, 6 godzin, 1 minutę temu 90 źrodło rozwiń
Posted on przez Daniel PlawgoWprowadzenie Dzisiaj kolejny wpis o Postmanie. W ostatnim pokazałem Ci, w jaki sposób dodawać asserty do żądań w Postmanie, aby weryfikować poprawność działania aplikacji. Na końcu zobaczyłeś, jak uruchamiać testy z wykorzystaniem wbudowanego runnera. Jest on wygodny w momencie, gdy pracujemy nad zmianami w api. Natomiast w celu systematycznej weryfikacji poprawności działania aplikacji sprawdza się średnio. Na szczęście testy można wykonywać automatycznie w ramach buildów ...
Posted on przez Daniel PlawgoWprowadzenie Postman jest genialnym narzędziem, bez którego nie wyobrażam sobie pracy nad WebApi. Kilka miesięcy temu opisywałem na blogu jak testować api z wykorzystaniem Postamana. Pokazałem jak wysłać żądania, używać zmiennych oraz zapisywać testowe żądania w kolekcje. Oczywiście Postman oferuje dużo więcej. W tym wpisie pokaże Ci jak można wykorzystać asserty w Postmanie do automatycznych testów, aby wykonywać je później w ramach CI/CD. Dzięki czemu możemy mieć większą ...
Kilka tygodni temu pojawił się pierwszy artykuł o frameworku Blazor na blogu. Od tamtego czasu zmienił się status frameworka. Wyszedł z fazy eksperymentalnej i aktualnie jest w wersji Preview. Część Server-side zostanie wydana wraz z .NET Core 3.0 we wrześniu 2019. Na stabilną część Client-side działającą na WebAssembly przyjdzie nam poczekać dodatkowy rok, do momentu wydania .NET 5. Ale i tak myślę, że warto już teraz interesować się tym frameworkiem. W dzisi...
Jako programista .NET bardzo cieszę się z tego, że Microsoft obok rozwoju całej platformy .NET dodaje również nowe rzeczy do samego języka C#. Wszystko po to, aby nam, programistom, pracowało się jeszcze łatwiej i efektywniej – choć nie zawsze wprowadzone mechanizmy wydają się fajne i się je wykorzystuje. Przykładowo pattern matching dodany do switch w C# 7 (jeśli nie wiesz, co to, to w dalszej części wpisu pokażę, czym to jest) jakoś nie przypadł mi do gustu ...
Sztuka programowania 2009 dni, 4 godziny, 44 minuty temu 414 źrodło rozwiń
W kolejnym wpisie pozostajemy przy zmianach, które pojawiły się w nowej wersji Visual Studio 2019. Tym razem zajmiemy się zmianami w debugowaniu aplikacji. Pojawiło się kilka ciekawych rzeczy, takich jak wyszukiwanie w okienkach Autos, Locals, Watch, Data Breakpoint czy zwiększenie wydajności. Jeśli jeszcze nie pobrałeś/pobrałaś Visual Studio 2019, to gorąco zachęcam, bo warto!...
Zapewne nie raz miałeś(-łaś) tak, że aplikacja na produkcji, u klienta lub serwerze testowym działa inaczej, niż powinna. A to pojawia się jakiś wyjątek, a to wynik operacji jest inny, niż powinien być. Znając życie, w logach nic ciekawego nie było i przez dłuższy czas dodawałeś(-łaś) do nich kolejne linijki w pogoni za błędem. Myślę, że każdy z nas miał wcześniej czy później podobny problem. Nie raz przemknęło Ci przez myśl, by zainstalować Visual Studio, aby...
Jeśli zapytalibyśmy programistów oraz programistki o funkcjonalność, którą powinno mieć każde IDE, to prawdopodobnie większość osób wymieniłaby IntelliSense. Ba, myślę, że chyba nikt nie chciałby pracować bez niego. Microsoft podczas pracy nad Visual Studio 2019 zaczął się zastanawiać, w jaki sposób można usprawnić działanie IntelliSense. Tak powstało IntelliCode, czyli IntelliSense „na sterydach” wspierane przez sztuczną inteligencję. Microsoft ostatnio zmien...
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 2058 dni, 4 godziny, 25 minut temu 77 ź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 2065 dni, 3 godziny, 45 minut temu 172 źrodło rozwiń
Od kilku lat następuje coraz większa specjalizacja w tworzeniu aplikacji webowych. Jeszcze jakiś czas temu, tworząc projekt w ASP.NET MVC, większość rzeczy robiliśmy po stronie serwera, dodając pojedyncze dynamiczne elementy w jQuery po stronie przeglądarki. Teraz po stronie serwera tworzymy głównie API, które następnie jest wykorzystywane przez aplikację działającą w przeglądarce, tworzącą interfejs użytkownika. Takie podejście powoduje, że świat frontendu zn...
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 2079 dni, 4 godziny, 6 minut temu 204 ź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 2086 dni, 4 godziny, 9 minut 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 2093 dni, 4 godziny, 17 minut temu 168 źrodło rozwiń
Cóż tam, panie, w polityce? Chińcyki trzymają się mocno!? Jeden z bardziej znanych mi cytatów. Tata i dziadek powtarzali go tak wiele razy, że aż trudno spamiętać. “Wesele” Wyspiańskiego, akt I, scena I. A co to ma wspólnego z dotnetem? No jak to? Dotnet trzyma się mocniej niż Chińcyki! A więc poniżej subiektywny, osobisty, dump linków - podejście 5, miejmy nadzieję, że tym razem z sukcesem. No to jedziemy!Podsumowanie tygodnia dotnetomaniaka Jak jeszcze nie czytałeś co działo sie na polskiej scenie ...
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 2100 dni, 3 godziny, 48 minut temu 94 ź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 2108 dni, 2 godziny, 14 minut temu 199 źrodło rozwiń
Rozwijanie usługi systemowej stworzonej z domyślnego szablonu w Visual Studio nie jest prostym zajęciem. Szczególnie debugowanie takiej aplikacji sprawia sporo problemów. Nie można z poziomu IDE uruchomić usługi i jej debugować. Trzeba podpinać się pod działający proces. W przypadku gdy chcemy zdebugować start usługi, musimy posiłkować się różnymi dziwnymi konstrukcjami, które zatrzymają start usługi do momentu podpięcia się debugera. W dzisiejszym wpisie będę...
Logowanie działania aplikacji jest bardzo przydatne podczas późniejszej analizy tego, co się stało. Na ogół prawie każda aplikacja loguje jakieś informacje. Niestety zauważyłem, że równie często nie do końca dobrze logujemy wiadomości. Jest to szczególnie widoczne w aplikacjach webowych (na przykład w ASP.NET MVC). Przy dużej liczbie użytkowników wiadomości z poszczególnych żądań są wymieszane między sobą, przez co ich późniejsza analiza jest bardzo utrudniona ...
Sposób tworzenia aplikacji webowych zmienia się na przestrzeni czasu. W świecie .NET przez lata kodowaliśmy w ASP.NET MVC, w którym widoki były generowane po stronie serwera. Od jakiegoś czasu idziemy w kierunku, w którym backend udostępnia API, z którego korzysta aplikacja po stronie przeglądarki i która generuje widoki po stronie klienta. W związku z tym zmienił się też sposób testowania aplikacji po stronie serwera. Jednym z dostępnych narzędzi, które możemy...