- nowość
C# 12 i .NET 8 dla programistów aplikacji wieloplatformowych. Twórz aplikacje, witryny WWW oraz serwisy sieciowe za pomocą ASP.NET Core 8, Blazor i EF Core 8 - ebook
C# 12 i .NET 8 dla programistów aplikacji wieloplatformowych. Twórz aplikacje, witryny WWW oraz serwisy sieciowe za pomocą ASP.NET Core 8, Blazor i EF Core 8 - ebook
Microsoft może być dumny z języka C# i platformy .NET! Są one konsekwentnie rozwijane i wzbogacane, a z każdą kolejną wersją praca programisty staje się coraz efektywniejsza i bardziej satysfakcjonująca. Dzięki aktualnej wersji C# 12 i .NET 8 bez trudu będziesz tworzyć rozbudowane witryny internetowe czy aplikacje mobilne.
Ta książka jest kolejnym, starannie zaktualizowanym wydaniem cenionego i lubianego poradnika, dzięki któremu Twoja praca w języku C# stanie się przyjemna i wydajna. Znajdziesz tu liczne przykłady prezentujące nowe elementy .NET 8: aliasy typów i konstruktory podstawowe, zapewniające spójny i czytelny kod. Nauczysz się stosować klauzule ochronne i uproszczoną implementację pamięci podręcznej w ASP.NET Core 8. Poznasz też nową metodę kompilacji AOT, dzięki której publikowane serwisy zajmują mniej pamięci i szybciej się uruchamiają. Na zakończenie zaznajomisz się również z technologią Blazor Full Stack, będącą nowym, zunifikowanym modelem elastycznego projektowania aplikacji sieciowych.
Z tą książką nauczysz się:
- używać nowych funkcji języka C# 12
- stosować kompilację native AOT dla serwisów sieciowych z minimalnym API
- korzystać z technologii Blazor Full Stack, Razor Pages i innych funkcji ASP.NET Core
- tworzyć i aktualizować bazy danych w aplikacjach
- odczytywać dane i manipulować nimi za pomocą LINQ
- budować złożone serwisy za pomocą WebAPI lub Minimal API
Nowa jakość programowania w Twoich rękach. Poznaj pełny potencjał C# 12 i .NET 8!
Spis treści
O autorze
O korektorze merytorycznym
Wstęp
Rozdział 1. Cześć, C#! Witaj, .NET!
- Wprowadzenie do książki i jej zawartości
- Pobieranie kodu przygotowanego dla tej książki
- Pojęcia związane z .NET używane w tej książce
- Struktura książki i używany w niej styl
- Tematy omawiane w tej książce
- Konfigurowanie środowiska programistycznego
- Wybieranie narzędzia i typu aplikacji właściwych do nauki
- Instalowanie na wielu platformach
- Pobieranie i instalowanie Visual Studio 2022 dla Windows
- Pobieranie i instalowanie Microsoft Visual Studio Code
- Poznawanie .NET
- Plany obsługi platformy .NET
- Poznawanie języka IL
- Porównanie technologii .NET
- Zarządzanie wieloma projektami w edytorach kodu
- Tworzenie aplikacji konsoli za pomocą Visual Studio 2022
- Pisanie kodu za pomocą Visual Studio 2022
- Kompilowanie i uruchamianie kodu w Visual Studio
- Programy najwyższego poziomu
- Wymagania programów najwyższego poziomu
- Ujawnianie przestrzeni nazwy klasy Program
- Dodawanie drugiego projektu w Visual Studio 2022
- Tworzenie aplikacji konsoli za pomocą Visual Studio Code
- Pisanie kodu za pomocą Visual Studio Code
- Kompilowanie i uruchamianie kodu za pomocą polecenia dotnet
- Dodawanie drugiego projektu w Visual Studio Code
- Podsumowanie kroków wykonanych w Visual Studio Code
- Podsumowanie innych typów projektów używanych w tej książce
- Wykorzystywanie repozytorium GitHuba w tej książce
- Kod aplikacji tworzonych w tej książce
- Pobieranie kodu rozwiązań z repozytorium GitHuba
- Używanie systemu Git w Visual Studio Code
- Gdzie znaleźć pomoc?
- Przeglądanie dokumentacji Microsoftu
- Linki do dokumentacji używane w tej książce
- Uzyskiwanie pomocy dla narzędzia dotnet
- Przeglądanie definicji typów i ich elementów
- Konfigurowanie wskazówek w tekście
- Poszukiwanie odpowiedzi na Stack Overflow
- Poszukiwanie odpowiedzi za pomocą Google
- Przeszukiwanie kodu źródłowego .NET
- Subskrybowanie blogów
- Filmy Scotta Hanselmana
- Narzędzia AI, takie jak ChatGPT i GitHub Copilot
- Wyłączanie narzędzi, gdy zaczynają przeszkadzać
- Praktyka i ćwiczenia
- Ćwiczenie 1.1 - sprawdź swoją wiedzę
- Ćwiczenie 1.2 - ćwicz C# gdzie się da
- Ćwiczenie 1.3 - dalsza lektura
- Ćwiczenie 1.4 - używanie notatników Polyglot
- Ćwiczenie 1.5 - motywy kolorystyczne w nowoczesnym .NET
- Ćwiczenie 1.6 - darmowa nauka C# i certyfikacja
- Ćwiczenie 1.7 - wersje alfa platformy .NET
- Podsumowanie
Rozdział 2. Mówimy w C#
- Wprowadzenie do języka C#
- Rozpoznawanie wersji oraz funkcji języka
- Standardy języka C#
- Odczytywanie wersji używanego kompilatora C#
- Wyświetlanie numeru wersji kompilatora
- Poznawanie gramatyki i słownictwa języka C#
- Gramatyka języka C#
- Instrukcje
- Komentarze
- Bloki
- Przykłady instrukcji i bloków
- Słownictwo języka C#
- Porównanie języków programowania do języków ludzkich
- Zmiana schematu kolorów składni języka C#
- Pomoc przy pisaniu kodu
- Importowanie przestrzeni nazw
- Niejawne i globalne importowanie przestrzeni nazw
- Czasowniki jako metody
- Rzeczowniki to typy, pola i zmienne
- Ujawnienie wielkości słownika języka C#
- Przykład prośby do ChatGPT o wyjaśnienie kodu
- Praca ze zmiennymi
- Nazywanie zmiennych i przypisanie wartości
- Literały
- Przechowywanie tekstu
- Przechowywanie liczb
- Przechowywanie liczb rzeczywistych
- Przechowywanie wartości logicznych
- Zapisywanie obiektów dowolnego typu
- Przechowywanie typów dynamicznych
- Deklarowanie zmiennych lokalnych
- Odczytywanie i ustalanie domyślnych wartości typów
- Dokładniejsze poznawanie aplikacji konsoli
- Wyświetlanie informacji dla użytkownika
- Pobieranie danych od użytkownika
- Uproszczone korzystanie z konsoli
- Odczytywanie naciśnięć klawiszy
- Odczytywanie parametrów aplikacji konsoli
- Ustalanie opcji za pomocą argumentów
- Obsługiwanie platform nieobsługujących wybranych API
- Instrukcje async i await
- Poprawianie reakcji aplikacji konsoli
- Praktyka i ćwiczenia
- Ćwiczenie 2.1 - sprawdź swoją wiedzę
- Ćwiczenie 2.2 - sprawdź swoją wiedzę o typach liczbowych
- Ćwiczenie 2.3 - poznaj wielkości i zakresy liczb
- Ćwiczenie 2.4 - dalsza lektura
- Ćwiczenie 2.5 - Pakiet Spectre
- Podsumowanie
Rozdział 3. Sterowanie przepływem, konwertowanie typów i obsługa wyjątków
- Działania na zmiennych
- Operatory dwuargumentowe
- Operatory jednoargumentowe
- Operatory trójargumentowe
- Objaśnienie operatorów jednoargumentowych
- Objaśnianie dwuargumentowych operatorów arytmetycznych
- Operatory przypisania
- Operatory pomijania wartości null
- Operatory logiczne
- Warunkowe operatory logiczne
- Operatory bitowe i operatory przesunięć
- Operatory różne
- Instrukcje wyboru
- Instrukcja if
- Dopasowywanie wzorców z instrukcją if
- Instrukcja switch
- Dodawanie nowego elementu do projektu w Visual Studio 2022
- Dopasowywanie wzorców z instrukcją switch
- Upraszczanie instrukcji switch za pomocą wyrażeń switch
- Instrukcje iteracji
- Instrukcja while
- Instrukcja do
- Instrukcja for
- Instrukcja foreach
- Zapisywanie wielu wartości w tablicy
- Praca z tablicami jednowymiarowymi
- Praca z tablicami wielowymiarowymi
- Praca z tablicami poszarpanymi
- Dopasowywanie wzorców list w tablicach
- Tablice inline
- Podsumowanie tablic
- Rzutowanie i konwertowanie między typami
- Jawne i niejawne rzutowanie liczb
- Zapisywanie liczb ujemnych w postaci binarnej
- Używanie typu System.Convert
- Zaokrąglanie liczb
- Kontrolowanie sposobu zaokrąglania
- Konwersja z dowolnego typu na ciąg znaków
- Konwertowanie obiektu binarnego na ciąg znaków
- Parsowanie ciągów znaków z liczbami, datami i czasem
- Konwencja nazywania metod ze słowem Try
- Obsługa wyjątków
- Instrukcja try
- Wykrywanie przepełnień
- Instrukcja checked
- Instrukcja unchecked
- Praktyka i ćwiczenia
- Ćwiczenie 3.1 - sprawdź swoją wiedzę
- Ćwiczenie 3.2 - pętle i przepełnienia
- Ćwiczenie 3.3 - sprawdź swoją wiedzę o operatorach
- Ćwiczenie 3.4 - pętle i operatory
- Ćwiczenie 3.5 - obsługa wyjątków
- Ćwiczenie 3.6 - poznaj notatniki C#
- Ćwiczenie 3.7 - dalsza lektura
- Podsumowanie
Rozdział 4. Pisanie, debugowanie i testowanie funkcji
- Tworzenie funkcji
- Programy i funkcje najwyższego poziomu
- Co jest automatycznie generowane dla funkcji lokalnej?
- Definiowanie częściowej klasy Program z funkcjami statycznymi
- Co jest generowane automatycznie dla funkcji statycznej?
- Przykład z tabliczką mnożenia
- Dygresja na temat argumentów i parametrów
- Pisanie funkcji zwracającej wartość
- Rekurencyjne obliczanie silni
- Dokumentowanie funkcji za pomocą komentarzy XML
- Używanie wyrażeń lambda w implementacji funkcji
- Debugowanie tworzonego programu
- Tworzenie aplikacji z celowym błędem
- Tworzenie punktu przerwania
- Pasek narzędzi debugowania
- Okna debugowania
- Krokowe wykonywanie kodu
- Używanie zintegrowanego terminala Visual Studio Code podczas debugowania
- Dostosowywanie punktów przerwania
- Przeładowywanie na gorąco w trakcie programowania
- Przeładowywanie na gorąco w Visual Studio 2022
- Przeładowywanie na gorąco w Visual Studio Code i w wierszu poleceń
- Protokołowanie
- Dostępne opcje protokołowania
- Wykorzystywanie typów Debug i Trace
- Konfigurowanie obiektów nasłuchujących
- Przełączanie poziomów śledzenia
- Protokołowanie informacji o kodzie źródłowym
- Testy jednostkowe
- Różne rodzaje testów
- Tworzenie biblioteki klas wymagającej testowania
- Tworzenie testów jednostkowych
- Rzucanie i wychwytywanie wyjątków w funkcjach
- Rozróżnienie błędów użycia i błędów wykonania
- Wyjątki często rzucane w funkcjach
- Rzucanie wyjątków za pomocą klauzul ochronnych
- Czym jest stos wywołań?
- Gdzie należy wychwytywać wyjątki?
- Ponowne rzucanie wyjątku
- Implementowanie wzorca tester-wykonawca i wzorca próby
- Praktyka i ćwiczenia
- Ćwiczenie 4.1 - sprawdź swoją wiedzę
- Ćwiczenie 4.2 - tworzenie funkcji z wykorzystaniem debugowania i testów jednostkowych
- Ćwiczenie 4.3 - dalsza lektura
- Podsumowanie
Rozdział 5. Tworzenie własnych typów w programowaniu obiektowym
- Programowanie obiektowe
- Tworzenie bibliotek klas
- Tworzenie biblioteki klas
- Przestrzenie nazw o zasięgu całego pliku
- Definiowanie klasy w przestrzeni nazw
- Modyfikatory dostępu
- Elementy klasy
- Importowanie przestrzeni nazw, aby użyć wybranego typu
- Tworzenie obiektów
- Przechowywanie danych w polach
- Definiowanie pól
- Typy pól
- Modyfikatory dostępu
- Ustalanie i wypisywanie wartości pól
- Ustalanie wartości pól za pomocą składni inicjalizacji obiektu
- Zapisywanie wartości za pomocą słowa kluczowego enum
- Przechowywanie wielu wartości w typie enum
- Zapisywanie wielu wartości za pomocą kolekcji
- Kolekcje generyczne
- Tworzenie pól statycznych
- Tworzenie stałych pól
- Tworzenie pól tylko do odczytu
- Wymaganie podania wartości właściwości przy tworzeniu obiektu
- Inicjalizowanie pól w konstruktorach
- Praca z metodami i krotkami
- Zwracanie wartości z metody
- Sterowanie przekazywaniem parametrów
- Przeciążanie metod
- Parametry opcjonalne i nazywane
- Mieszanie parametrów opcjonalnych i wymaganych
- Sposoby przekazywania parametrów
- Zwracanie wartości ze słowem kluczowym ref
- Łączenie wielu wartości za pomocą krotki
- Implementowanie funkcji lokalnych
- Dzielenie klas na części
- Kontrola dostępu za pomocą właściwości i indekserów
- Definiowanie właściwości tylko do odczytu
- Definiowanie właściwości z możliwością przypisania
- Ograniczanie wartości typów wyliczeniowych
- Definiowanie indekserów
- Dopasowywanie wzorców z obiektami
- Definiowanie listy pasażerów
- Rozszerzenia dopasowywania wzorców w C# 9 i nowszych
- Praca z rekordami
- Właściwości wyłącznie inicjalizowane
- Rekordy
- Równość typów rekordowych
- Pozycyjne elementy danych w rekordach
- Definiowanie podstawowego konstruktora klasy
- Praktyka i ćwiczenia
- Ćwiczenie 5.1 - sprawdź swoją wiedzę
- Ćwiczenie 5.2 - modyfikatory dostępu
- Ćwiczenie 5.3 - dalsza lektura
- Podsumowanie
Rozdział 6. Implementowanie interfejsów i dziedziczenie klas
- Konfigurowanie biblioteki klas i aplikacji konsoli
- Metody statyczne i przeciążanie operatorów
- Implementowanie działań w metodzie
- Implementowanie działań za pomocą operatora
- Wykorzystywanie typów generycznych
- Praca z typami niegenerycznymi
- Praca z typami generycznymi
- Wywoływanie i obsługa zdarzeń
- Wywoływanie metod za pomocą delegatów
- Przykłady używania delegatów
- Status: to skomplikowane!
- Definiowanie i obsługa delegatów
- Definiowanie i obsługa zdarzeń
- Implementowanie interfejsów
- Typowe interfejsy
- Porównywanie obiektów podczas sortowania
- Porównywanie obiektów za pomocą osobnej klasy
- Jawne i niejawne implementowanie interfejsów
- Definiowanie interfejsów z domyślnymi implementacjami
- Zarządzanie pamięcią za pomocą typów referencyjnych i typów wartości
- Pamięć stosu i sterty
- Definiowanie typów referencyjnych i typów wartości
- Sposób przechowywania w pamięci typów referencyjnych i typów wartości
- Boxing
- Równość typów
- Definiowanie typu kategorii struct
- Praca z typami record struct
- Zwalnianie niezarządzanych zasobów
- Wymuszanie wywołania metody Dispose
- Praca z wartościami null
- Przekształcanie typu wartości w typ nullowalny
- Inicjalizowanie typów nullowalnych
- Poznawanie nullowalnych typów referencyjnych
- Sterowanie funkcją ostrzeżeń dla typów nullowalnych
- Wyłączanie innych ostrzeżeń kompilatora
- Deklarowanie nienullowalnych zmiennych i parametrów
- Sprawdzanie wartości null
- Kontrolowanie wartości null w parametrach metod
- Dziedziczenie klas
- Rozbudowywanie klasy
- Ukrywanie elementów
- Słowa kluczowe this i base
- Pokrywanie elementów klasy
- Dziedziczenie po klasach abstrakcyjnych
- Wybieranie między interfejsem a klasą abstrakcyjną
- Blokowanie dziedziczenia i pokrywania
- Polimorfizm
- Rzutowanie w ramach hierarchii dziedziczenia
- Rzutowanie niejawne
- Rzutowanie jawne
- Obsługa wyjątków rzutowania
- Dziedziczenie i rozbudowywanie typów .NET
- Dziedziczenie po wyjątku
- Rozszerzanie typów, po których nie można dziedziczyć
- Możliwości tworzenia własnych typów
- Kategorie własnych typów i ich możliwości
- Zmienność i rekordy
- Dziedziczenie i implementowanie
- Przeglądanie przykładowego kodu
- Praktyka i ćwiczenia
- Ćwiczenie 6.1 - sprawdź swoją wiedzę
- Ćwiczenie 6.2 - tworzenie hierarchii dziedziczenia
- Ćwiczenie 6.3 - pisanie lepszego kodu
- Ćwiczenie 6.4 - dalsza lektura
- Podsumowanie
Rozdział 7. Poznawanie typów .NET
- Wprowadzenie do .NET 8
- Sprawdzanie dostępności aktualizacji .NET SDK
- Zestawy i przestrzenie nazw
- Zestawy, pakiety i przestrzenie nazw
- Poznawanie pakietów SDK dla projektów .NET
- Przestrzenie nazw i typy w zestawach
- Pakiety NuGet
- Czym są frameworki?
- Importowanie przestrzeni nazw w celu użycia typu
- Związki słów kluczowych języka C# z typami .NET
- Wieloplatformowe współdzielenie kodu z bibliotekami klas .NET Standard
- Domyślne ustawienia bibliotek klas w różnych wersjach SDK
- Tworzenie biblioteki klas .NET Standard
- Kontrolowanie wersji .NET SDK
- Mieszanie pakietów SDK i docelowych frameworków
- Publikowanie własnych aplikacji
- Tworzenie aplikacji konsoli do publikacji
- Poznawanie polecenia dotnet
- Pobieranie informacji na temat platformy .NET i jej środowiska
- Zarządzanie projektami
- Publikowanie samodzielnej aplikacji
- Publikowanie aplikacji jednoplikowej
- Zmniejszanie wielkości aplikacji
- Kontrolowanie miejsca tworzenia artefaktów
- Kompilacja native AOT
- Dekompilowanie zestawów
- Dekompilowanie za pomocą rozszerzenia ILSpy w Visual Studio 2022
- Przeglądanie oryginalnych źródeł w Visual Studio 2022
- Nie, nie można zablokować możliwości dekompilowania
- Przygotowywanie własnych pakietów NuGet
- Dodawanie odwołania do pakietu
- Tworzenie pakietu dla NuGet
- Przeszukiwanie pakietów NuGet
- Testowanie pakietu
- Praca z proponowanymi funkcjami
- Wymaganie proponowanych funkcji
- Włączanie proponowanych funkcji
- Interceptory metod
- Praktyka i ćwiczenia
- Ćwiczenie 7.1 - sprawdź swoją wiedzę
- Ćwiczenie 7.2 - dalsza lektura
- Ćwiczenie 7.3 - przenoszenie kodu z .NET Framework do nowoczesnego .NET
- Ćwiczenie 7.4 - tworzenie generatorów kodu źródłowego
- Ćwiczenie 7.5 - PowerShell
- Ćwiczenie 7.6 - poprawianie wydajności w .NET
- Podsumowanie
Rozdział 8. Używanie typów .NET
- Praca z liczbami
- Praca z wielkimi liczbami całkowitymi
- Praca z liczbami zespolonymi
- Generowanie liczb losowych na potrzeby gier i podobnych aplikacji
- Generowanie identyfikatorów GUID
- Praca z tekstem
- Odczytywanie długości ciągu znaków
- Odczytywanie znaków z ciągu
- Dzielenie ciągu znaków
- Pobieranie części ciągu znaków
- Poszukiwanie tekstu w ciągu
- Porównywanie ciągów znaków
- Inne elementy klasy string
- Wydajne tworzenie ciągów znaków
- Dopasowywanie wzorców za pomocą wyrażeń regularnych
- Kontrolowanie cyfr wprowadzonych jako tekst
- Poprawianie wydajności wyrażeń regularnych
- Składnia wyrażenia regularnego
- Przykłady wyrażeń regularnych
- Dzielenie złożonych ciągów znaków rozdzielanych przecinkami
- Włączanie kolorowania składni wyrażeń regularnych
- Poprawianie wydajności wyrażeń regularnych za pomocą generatorów kodu
- Praca z kolekcjami
- Wspólne funkcje wszystkich kolekcji
- Sortowanie kolekcji
- Używanie specjalizowanych kolekcji
- Kolekcje tylko do odczytu, niezmienne i zamrożone
- Inicjalizowanie kolekcji za pomocą wyrażeń kolekcji
- Dobre praktyki w pracy z kolekcjami
- Praca z typem Span, indeksami i zakresami
- Wydajne korzystanie z pamięci za pomocą typu Span
- Określanie pozycji za pomocą typu Index
- Definiowanie zakresów za pomocą typu Range
- Używanie indeksów i zakresów
- Praktyka i ćwiczenia
- Ćwiczenie 8.1 - sprawdź swoją wiedzę
- Ćwiczenie 8.2 - wyrażenia regularne
- Ćwiczenie 8.3 - metody rozszerzające
- Ćwiczenie 8.4 - praca z zasobami sieciowymi
- Ćwiczenie 8.5 - dalsza lektura
- Podsumowanie
Rozdział 9. Hardening i bezpieczeństwo
- Program antywirusowy Microsoft Defender
- Instalacja programu antywirusowego Microsoft Defender
- Wykorzystanie interfejsu użytkownika
- Wyłączanie programu antywirusowego Microsoft Defender
- Czym w ogóle jest ATP?
- Windows Defender ATP Exploit Guard
- Zapora systemu Windows Defender - bez żartów
- Trzy konsole administracyjne zapory systemu Windows
- Trzy różne profile zapory
- Tworzenie w zaporze nowej reguły przychodzącej
- Tworzenie reguły zezwalającej na wysyłanie pingów (ICMP)
- Zarządzanie zaporą WFAS przy użyciu zasad grupy
- Technologie szyfrowania
- BitLocker i wirtualny układ TPM
- Chronione maszyny wirtualne
- Szyfrowane sieci wirtualne
- Encrypting File System
- Protokoły IPsec
- Azure AD Password Protection
- Szczegółowe zasady dotyczące haseł
- Zaawansowana analiza zagrożeń - koniec wsparcia
- Czym jest (była) ATA?
- Microsoft Defender for Identity
- Najważniejsze wskazówki dotyczące ogólnego bezpieczeństwa
- Pozbycie się wiecznych administratorów
- Korzystanie z odrębnych kont w celu uzyskania dostępu administracyjnego
- Używanie innego komputera do wykonywania zadań administracyjnych
- Nigdy nie przeglądaj internetu, będąc zalogowanym na serwerze
- Kontrola dostępu oparta na rolach
- Just Enough Administration
- Zmiana portu 3389 połączenia pulpitu zdalnego
- Natychmiast wyłącz zewnętrzne połączenia pulpitu zdalnego
- Wyłącz niebezpieczne protokoły szyfrowania
- Podsumowanie
- Pytania
Rozdział 10. Praca z bazami danych przy użyciu Entity Framework Core
- Nowoczesne bazy danych
- Czym jest Entity Framework?
- Entity Framework Core
- Co znaczy "najpierw baza danych" i "najpierw kod"?
- Usprawnienia wydajności w EF Core
- Używanie przykładowej relacyjnej bazy danych
- Używanie SQLite
- Konfigurowanie EF Core w projekcie .NET
- Tworzenie aplikacji konsoli do pracy z EF Core
- Tworzenie przykładowej bazy danych Northwind na serwerze SQLite
- Zarządzanie przykładową bazą danych Northwind za pomocą SQLiteStudio
- Używanie lekkiego dostawcy ADO.NET dla SQLite
- Wybieranie dostawcy danych EF Core
- Łączenie z bazą danych
- Definiowanie klasy kontekstu bazy danych Northwind
- Definiowanie modeli EF Core
- Konwencje w EF Core
- Atrybuty EF Core
- Płynne API EF Core
- Tworzenie modelu w EF Core
- Dodawanie tabel do klasy kontekstu bazy danych Northwind
- Konfigurowanie narzędzia dotnet-ef
- Tworzenie modeli na podstawie istniejącej bazy danych
- Dostosowywanie szablonów wstecznej inżynierii
- Konfigurowanie konwencji
- Zapytania do modelu EF Core
- Filtrowanie dołączanych encji
- Filtrowanie i sortowanie produktów
- Pobieranie generowanych instrukcji SQL
- Protokołowanie w EF Core
- Pobieranie pojedynczej encji
- Dopasowywanie wzorców za pomocą instrukcji Like
- Generowanie liczb losowych w zapytaniach
- Definiowanie globalnych filtrów
- Wzorce ładowania i śledzenia w EF Core
- Chętne ładowanie encji za pomocą metody rozszerzającej Include
- Włączenie leniwego ładowania
- Jawne ładowanie encji za pomocą metody Load
- Kontrolowanie śledzenia encji
- Manipulowanie danymi w EF Core
- Wstawianie encji
- Aktualizowanie encji
- Usuwanie encji
- Wydajniejsze aktualizowanie i usuwanie
- Grupowanie kontekstów baz danych
- Praktyka i ćwiczenia
- Ćwiczenie 10.1 - sprawdź swoją wiedzę
- Ćwiczenie 10.2 - eksportowanie danych z wykorzystaniem różnych formatów serializacji
- Ćwiczenie 10.3 - praca z transakcjami
- Ćwiczenie 10.4 - modele Code First w EF Code
- Ćwiczenie 10.5 - sekrety aplikacji
- Ćwiczenie 10.6 - dalsza lektura
- Ćwiczenie 10.7 - poznawanie baz danych NoSQL
- Podsumowanie
Rozdział 11. Odczytywanie danych i manipulowanie nimi za pomocą LINQ
- Tworzenie wyrażeń LINQ
- Porównanie imperatywnych i deklaratywnych funkcji języka
- Z czego składa się LINQ?
- Rozbudowa sekwencji za pomocą klas wyliczeniowych
- LINQ w praktyce
- Czym jest opóźnione wykonanie?
- Filtrowanie encji za pomocą metody Where
- Korzystanie z metody nazwanej
- Upraszczanie kodu przez usunięcie jawnego tworzenia delegata
- Korzystanie z wyrażenia lambda
- Sortowanie encji
- Sortowanie według elementów
- Deklarowanie zapytania za pomocą słowa kluczowego var lub określonego typu
- Filtrowanie według typu
- Praca ze zbiorami
- Używanie LINQ z EF Core
- Tworzenie aplikacji konsoli do nauki LINQ dla Encji
- Tworzenie modelu danych EF Core
- Filtrowanie i sortowanie sekwencji
- Projekcje sekwencji na nowe typy
- Łączenie i grupowanie
- Grupowanie wyszukiwań
- Agregowanie i stronicowanie sekwencji
- Sprawdzanie, czy sekwencja nie jest pusta
- Uważaj na właściwość Count!
- Stronicowanie z LINQ
- Upiększanie składni
- Praktyka i ćwiczenia
- ...
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-289-1456-8 |
Rozmiar pliku: | 26 MB |