Entity framework – obowiązkowa minimalna konfiguracja #dajsiepoznac

Lazy loading

Kiedy korzystamy z EF należy pamiętać o tym, aby zawsze wyłączyć leniwe ładowanie (lazy loading) w przeciwnym wypadku za każdym razem gdy będziemy sięgać po dane które leżą w innej tabeli niż ta, która została początkowo zaciągnięta z bazy danych EF zrobi to za nas. Brzmi fajnie, ale gdy pomyślicie że taka operacja może wykonać się w pętli, pomysł szybko przestaje być tak miły. N wykonań pętli N pojedynczych zapytań do bazy danych. Minusem wyłączenia lenia w EF jest to, że jeśli nie powiemy wcześniej EF że chcemy wykonać operację JOIN nie będziemy mieli dostępu do danych z innej tabeli.

Kod wygląda tak, pierwsze zapytanie bez, drugie z instrukcją JOIN

Linia (@22) wyłącza lazy loading. Linia (@12) wyciąga z bazy tylko osoby, jesli pole Properties będzie nullem. Linia (@13) wyciąga z bazy osoby oraz wykonuje operację JOIN, lista cech w osobie zostanie wypełniona pasującymi wartościami. Ostrzeżenie: ponieważ w przykładzie wywołanie jest jedno pod drugim, gdy postawi się breakpoint po obu (@14), referencja osoby zostanie zaktualizowana. Może się więc okazać, że w przypadku p1 oraz p2 pola properties będą już ustawione. Zalecam w przypadku samodzielnego sprawdzania przykładu, postawić breakpoint odpowiednio w liniach @12 oraz @13 i podejrzenie wartości property.

Logowanie

Często pojawia sie problem logowania zapytań które generuje EF, zawsze szukałem, paczek, rozwiązań czy gotowych bibliotek. Aż pewnego pięknego razu na SO znalazłem odpowiedź, która wygląda tak jak w linii 21. Najprościej jak się da, dopinam się do wewnętrznego logera oraz wypisuje na Debug.Trace informacje o zapytaniach, wyglądają one tak:

Widać tam wywołania dwóch zapytań (@12i @13) prosty oraz ten z JOIN, widoczny jest czas potrzeby na wykonywanie operacji jak i informacje o rozpoczęciu i zakończeniu połączenia. Wszystko co potrzeba aby sprawdzić czy zapytanie zostało wygenerowane w akceptowalny przez nas sposób – me gusta!

Tajne wpisy w app.config #dajsiepoznac

Jeśli nie chcesz mojej zguby…

Jeśli nie chcesz swojej zguby, nie wrzucaj do repozytorium sekretów swojej aplikacji. Można to osiągnąć w kilku prostych krokach, wystarczy że stworzysz w VS osobny plik z konfiguracją np. “secrets.config“, który może wyglądać tak:

Następnie zaciągniesz go w głównym web.configu w taki sposób:

W VS należy mieć go dodanego do projektu, właściwości ustawione powinny być na content i no-copy, tak samo jak w przypadku web.config. Od teraz zawartość secrets będzie wstrzykiwany do web.config podczas uruchomienia.
Jeszcze tylko w gicie warto dodać go do ignorowanych plików i można spokojnie wrzucać kod na serwer bez potrzeby pamiętania, aby zawsze odznaczyć secrets.config z listy plików.

Natomiast warto pamiętać, aby po każdej zmianie zrobić sobie backup. Tak aby nie stracić go przez przypadek.

ITAN – projekt rusza razem z #dajsiepoznac

Is There Any News

Jest to plan na internetową aplikacją do czytania kanałów RSS. Chodziło mi to po głowie już jakiś czas, kiedyś sprzedałem ten pomysł studentom, z którymi miałem okazję się współpracować. Sam pomysł wydaje się być prosty, dlatego ja zamierzam dołożyć do tego kilka dodatkowych rzeczy. Wymarzyłem sobie, że każdy użytkownik będzie mógł poza kanałami RSS obserwować także innych użytkowników. W ten sposób można poznać, jakie kanały czytają inni, które wpisy czytają dokładniej i czy  klikają po pełną treść. Podobnie marzy mi się, aby na takiej podstawie generować podsumowania dnia, miesiąca, tygodnia. Takie najgorętsze informacje. W ten sposób nie trzeba śledzić wszystkiego, a tylko te które inni czytają, udostępniają lub komentują. Jeśli wydaje Ci się to proste spójrz na dół strony, to tylko część rzeczy, które wymyśliłem do tej pory.

Jak zebrać pomysły

Jeśli macie ta przyjemność planowania czegoś, zbierania pomysłów, głębokiej rozkminy, co, gdzie, jak z kim to szczerze polecam mind mapping. Znowu product placement i znów android: ja aktualnie korzystam z SimpleMind dla androida. Wersja podstawowa ma wszystko, wersja płatna umożliwia synchronizacje w chmurze i eksport do obrazków i innego (30pln).

Dlaczego mind mapping? Dla mnie to co jest świetną sprawą to możliwość skakania po pomysłach i dopisywanie każdego kolejnego tam gdzie czuje że będzie pasować. Nie piszę ich jeden pod drugim, mogę rzucić gdzieś na ekranie, a potem powoli łączyć jeden z drugim, aż całość stanie się spójna. Lub zacząć od ogólnego planu i potem skupiać się i wymyślać do dalej, dodawać nowe zabawki.
Z mapowania korzystam także podczas robienia notatek ze spotkania, przygotowywania prezentacji, czy szkoleń i warsztatów. Takie surowe myśli mogę potem przejrzeć,poprawić i połączyć ze sobą.

Mind map ITAN

Poniżej moja wizja na to jak i co ma robić ITAN (ach, taka piękna nazwa robocza)

ITAM mapa myśli

Zadania

Co dalej? Zapewne przetłumaczę na małe zadania i przepiszę to wszystko na odpowiednie pojedyncze zadania na trello, aby móc śledzić na bieżąco swój postęp prac. Trello to świetna i darmowa (pewnie z ograniczeniami?) internetowa tablica kanbanowa. Tworzy się kolejne tablice/projekty na nich odpowiednie kolumny i zadania. Potem wystarczy tylko robić i przeciągać w trakcie postępowania prac na projektem. Tablica ITAN dostępna jest po tym adresem: https://trello.com/b/ONqNYIcH/itan W momencie pisania posta nie ma tam nic, poza zdefiniowanymi kolumnami.

Źródła

Githuba nie muszę raczej nikomu przedstawiać. Znowu idąc na skróty, źródła dostępne będą pod tym linkiem https://github.com/jstadnicki/isthereanynews

Tyle, powodzenia i do roboty.