Category Archives: .NET

Deferred execution w LINQ – kiedy wywoływane jest zapytanie?

By | August 30, 2016

LINQ jest funkcjonalnością, która zainteresowała mnie w C# praktycznie od początku mojej styczności z tym językiem. Jest to narzędzie naprawdę potężne i w odpowiednich rękach może bardzo usprawnić działanie aplikacji i zwiększyć czytelność kodu. Sęk w tym, że o ile łatwo pisze się wszelkiego rodzaju Selecty, Whery i ToListy, to fajnie byłoby jeszcze wiedzieć co,… Read More »

SignalR i AngularJS – Związek doskonały

By | August 6, 2016

Mniej więcej 3 miesiące temu zainteresowałem się biblioteką SignalR i bardzo szybko stała się ona jednym z moich ulubionych narzędzi. Z mojego polecenia skorzystało z niej kilka osób i każdy chwalił ją za bardzo szybkie widoczne efekty i banalną implementację. O czym nie wspomniałem w poprzednich postach, to połączenie SignalR z jednym z najpopularniejszych obecnie frameworków… Read More »

Tworzymy kanał RSS w ASP.NET MVC

By | July 1, 2016

Ostatnio stanąłem oko w oko z zadaniem stworzenia kanału RSS. Spodziewałem się czegoś trudniejszego, a zadanie okazało się o wiele prostsze niż myślałem. Być może sposób ten się komuś przyda, więc na wszelki wypadek się nim podzielę. Po szybkim researchu zdecydowanie najprzyjemniejszym i najprostszym rozwiązaniem wydało mi się stworzenie klasy RSSResult dziedziczącej po ActionResult, czyli klasie,… Read More »

Dynamiczne tworzenie zapytań do Entity Framework

By | June 22, 2016

Czasem może nas spotkać sytuacja, że bardzo potrzebujemy stworzyć zapytanie do Entity Framework, które musi dynamicznie reagować na nasze wymagania i w jednym konkretnym przypadku będzie potrzebowało dodatkowego Where(). Oczywiście, możemy napisać oddzielne zapytania i warunek, ale istnieje odrobinę sprytniejszy sposób. Zacznijmy od nakreślenia prostego kontekstu sytuacji. Załóżmy, że coś sprzedajemy i na przykład w poniedziałki nie… Read More »

Jak zacząć naukę programowania w C# (i nie tylko)?

By | May 30, 2016

Bardzo często spotykam się z pytaniem “jak rozpocząć naukę programowania”. Jako, że jestem samoukiem i jeszcze pamiętam swoje początki, a w podsumowaniu konkursu gorąco zachęcałem do brania udziału w inicjatywach takich jak Daj Się Poznać nawet jeśli ktoś dopiero zaczyna swoją przygodę z programowaniem, to postanowiłem podsumować swoje przemyślenia na temat rozpoczęcia samego procesu nauki,… Read More »

Powiadomienia o statusie realizacji zamówienia w czasie rzeczywistym – SignalR

By | May 19, 2016

W swoim projekcie umieściłem funkcjonalność, na którą czekałem już od jakiegoś czasu. Chodzi o informowanie klienta o statusie jakie ma jego zamówienie i szacowanym terminie realizacji w czasie rzeczywistym i bez przeładowywania strony. Wszystko za pośrednictwem pojedynczej strony, na którą klient jest przekierowywany po wykonaniu zamówienia i kilku linijek kodu w SignalR. Póki co znajduje się ona… Read More »

Integracja z Payu – Wysyłanie zamówień

By | May 15, 2016

Integracja systemu płatności PayU i ASP.NET MVC jest naprawdę prosta. Z ich dokumentacją i podstawową wiedzą na temat klienta REST API można rozpocząć wysyłanie zamówień w jeden wieczór. A dziś pokażę Wam jak wygląda to w moim projekcie. W tym poście pokryję tylko temat tworzenia nowych zamówień, wysyłania ich do API PayU i otrzymania linku… Read More »

Powiadomienia o nowych zamówieniach w czasie rzeczywistym – pierwsze kroki z SignalR

By | May 8, 2016

Chciałbym, aby po złożeniu zamówienia przez klienta obsługa restauracji była automatycznie powiadamiana o nowym zamówieniu i mogła rozpocząć jego realizację od razu. Bez odświeżania okna, szukania nowości na liście zamówień. Chcemy mieć wielki komunikat na środku ekranu niezależnie od tego gdzie w panelu administracyjnym właśnie się znajdujemy (przyjąłem założenie, że realizacja zamówienia ma najwyższy priorytet)… Read More »

Inicjowanie i wypełnianie bazy danych w Entity Framework Code First

By | May 4, 2016

Podczas pracy nad projektem lubię dysponować zestawem poglądowych danych, na których mogę operować podczas postępujących prac, spojrzeć jak prezentują się po odpaleniu aplikacji itd. Dziś opowiem o szybkim, łatwym i w pełni zgodnym z ideą Code First sposobie na wypełnienie bazy różnego rodzaju danymi podczas uruchamiania aplikacji i strategiami inicjalizacji bazy podczas każdego startu. Kiedy powinna być tworzona na… Read More »

Dodawanie WebAPI do istniejącego projektu

By | May 3, 2016

Niestety, ale bardzo poważnie zaciąłem się przy integracji z PayU, w związku z tym dzisiaj post o tym co zrobiłem jakiś tydzień temu. Mianowicie – odkryłem, że na śmierć zapomniałem dodać do projektu elementy WebAPI w momencie jego tworzenia. Nie wszystko stracone, bo dodanie API do projektu nie jest co prawda tak banalne jak zaznaczenie… Read More »

Obsługa zamówień w YumYum Commerce

By | April 10, 2016

Skoro tworzę system e-commerce, to oczywistym jest, że po złożeniu zamówień coś zaczyna się dziać. Jest to funkcjonalność kluczowa i posunąłbym się do stwierdzenia, że najważniejsze procesy w aplikacjach związanych z e-commerce dzieją się dookoła realizacji wpływających zamówień. Wypadałoby więc coś o tym opowiedzieć. W poprzednim poście napisałem, że do reprezentacji statusu zamówienia użyłem enuma. Ale… Read More »

Enum – Wyświetlanie nazwy z atrybutu Display Name w widoku

By | April 3, 2016

Enumy są fajne. Chociaż dałoby się bez nich żyć, to ułatwiają naprawdę wiele rzeczy. Sęk w tym, że przyjąłem sobie za cel pisanie nazw metod, klas etc. w kodzie tylko i wyłącznie po angielsku, a interfejs na chwilę obecną tworzę w naszym pięknym języku. Jak zatem wyświetlić dla określonej wartości enuma przetłumaczoną (lub kompletnie inną)… Read More »

Entity Framework Code First – Zmiany w strukturze bazy danych – Migrations

By | March 24, 2016

Dziś będzie bardzo krótko i bardzo prosto, a jednak jeśli ktoś zdecyduje się na korzystanie z podejścia Code First w EF to informacje takie są absolutnie niezbędne. Instalujemy paczki Entity Framework, dodajemy kilka encji do projektu, DbContext. Szybko przelatujemy wzrokiem przez tutorial i lecimy. Nasza baza stoi, ma się dobrze i wszystko działa, gra i… Read More »

Koszyk – Przechowywanie stanu i model binding

By | March 22, 2016

Jedną z podstawowych funkcjonalności prawie każdej aplikacji e-commerce jest koszyk. Jak możemy przechowywać jego stan? Jak najłatwiej umieścić go w kontrolerze? Jeśli jeszcze tego nie wiecie, to dowiecie się za chwilę. Kluczową decyzją przy tworzeniu koszyka nie jest jego budowa czy metody jakie będzie zawierał. Te są stosunkowo proste, bo i nie ma w nim… Read More »

Relacje Wiele-Wiele w generycznym repozytorium (Entity Framework)

By | March 18, 2016

Ostatnio wspominałem o pewnym problemie, który spotka każdego chętnego, by skorzystać z generycznego repozytorium używając jednocześnie Entity Framework. Problemem tym jest edycja encji, które zawierają w sobie relacje many-to-many. Sam problem jest banalny gdy mamy oddzielne repozytoria lub korzystamy bezpośrednio z DbContext, ale jeśli chcemy trzymać się generyczności, to musimy nieco zmienić naszą metodę Update.… Read More »

Generyczne Repozytoria i Unit of Work

By | March 12, 2016

W swoim projekcie będę operował na kilku różnych typach encji, które przy zastosowaniu wzorca repozytorium jaki przedstawiłem wcześniej wymagałyby każdorazowo oddzielnej klasy repozytorium. Chociaż wszystkie implementowałyby ten sam interfejs i oferowały w większości tą samą funkcjonalność, to wymagałyby wielokrotnego powtarzania tych samych linijek kodu. Byłoby to stosunkowo proste, ale nie miałoby większego sensu. Potrzebowałem rozwiązania,… Read More »

Wzorzec Repozytorium i Unit of Work

By | March 8, 2016

Na etapie projektowania YumYum miałem całkiem poważny dylemat dotyczący wyboru rozwiązania, które będzie łącznikiem aplikacji z bazą danych. Wcześniej używałem do tego wzorca repozytorium, który świetnie się sprawdzał przy niewielkich, treningowych projektach. Ostatnimi czasy przeczytałem mnóstwo głosów twierdzących (całkiem słusznie), że używanie wzorca repozytorium z Enity Frameworkiem nie ma najmniejszego sensu. Początkowo miałem zamiar korzystać… Read More »