C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5....

46

Transcript of C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5....

Page 1: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...
Page 2: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Autorzy: Krzysztof Żydzik, Microsoft Certified Solutions Developer, Microsoft Certified Professional, Microsoft SpecialistTomasz Rak, Politechnika Rzeszowska, Wydział Elektrotechniki i Informatyki, Katedra Informatyki i Automatyki, Rzeszów, Polska

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie,ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Redaktor prowadzący: Michał Mrowiec

Projekt okładki: Studio Gravite / OlsztynObarek, Pokoński, Pazdrijowski, Zaprucki

Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: [email protected] WWW: http://helion.pl (księgarnia internetowa, katalog książek)

Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/c6mvc5Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Kody źródłowe kolejnych kroków tworzenia przykładowej aplikacji dostępne są pod adresem:ftp://ftp.helion.pl/przyklady/c6mvc5.zip

ISBN: 978-83-246-9496-9

Copyright © Helion 2015

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Spis tre ciWst p ............................................................................................ 15

Rozdzia 1. C# — teoria i praktyka ................................................................... 19Wprowadzenie do j zyka C# .......................................................................................... 19

Kolejne wersje j zyka C# ......................................................................................... 20C# 2.0 (.NET Framework 2.0, Visual Studio 2005) ........................................20C# 3.0 (.NET Framework 3.5, Visual Studio 2008) ........................................20C# 4.0 (.NET Framework 4.0, Visual Studio 2010) ........................................21C# 5.0 (.NET Framework 4.5, Visual Studio 2012 oraz 2013) .......................21C# 6.0 (zapowied ) .........................................................................................21

Konwencje ............................................................................................................... 21Cel stosowania konwencji ...............................................................................22Pliki a klasy i interfejsy ...................................................................................22Wci cia ...........................................................................................................22Komentarze .....................................................................................................23Deklaracje klas, interfejsów i metod ...............................................................24Puste linie ........................................................................................................24Nawiasy klamrowe ..........................................................................................25Konwencje nazewnicze ...................................................................................25Pozosta e dobre praktyki .................................................................................26

Typy ......................................................................................................................... 26Deklaracja zmiennej ........................................................................................27Inicjalizacja zmiennej .....................................................................................28S owa kluczowe ..............................................................................................29Sta e i zmienne tylko do odczytu ....................................................................29Litera y ............................................................................................................30Typ wyliczeniowy ...........................................................................................31Konwersje typów i rzutowanie ........................................................................31Opakowywanie (boxing) i rozpakowywanie (unboxing) ................................32Warto ci zerowe oraz typy dopuszczaj ce warto ci zerowe ...........................33Typy generyczne .............................................................................................34

Tablice, a cuchy i kolekcje ..................................................................................... 34Tablice ............................................................................................................34

a cuchy .........................................................................................................36Kolekcje ..........................................................................................................37

Operatory ................................................................................................................. 38Operator trójargumentowy ?: ..........................................................................38Operator ?? ......................................................................................................40

Kup książkę Poleć książkę

Page 4: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

4 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

Instrukcje steruj ce ................................................................................................... 40Instrukcja if .....................................................................................................40Instrukcja switch .............................................................................................41

Instrukcje iteracyjne ................................................................................................. 43P tla while ......................................................................................................43P tla do while ..................................................................................................43P tla for ...........................................................................................................44P tla foreach ...................................................................................................45Instrukcje skoku ..............................................................................................45

Klasy, obiekty, pola, metody i w a ciwo ci .............................................................. 46Klasy ...............................................................................................................46Obiekty ...........................................................................................................48Pola .................................................................................................................48Metody ............................................................................................................49W a ciwo ci ....................................................................................................52

Podstawowe poj cia zwi zane z programowaniem obiektowym ............................. 53Abstrakcja .......................................................................................................53Hermetyzacja ..................................................................................................54Dziedziczenie ..................................................................................................54Polimorfizm ....................................................................................................55

Przeci anie operatorów ........................................................................................... 56Przeci anie operatorów relacji ......................................................................57Metody Equals() i GetHashCode() ..................................................................57Przeci anie operatorów konwersji .................................................................57Przeci anie operatorów logicznych ...............................................................58Przeci anie operatorów arytmetycznych .......................................................60

Przeci anie metod ................................................................................................... 61Indeksatory ............................................................................................................... 61Klasa System.Object ................................................................................................ 63Konstruktor i destruktor ........................................................................................... 64Garbage Collector .................................................................................................... 66

Zasada dzia ania GC .......................................................................................66Podzia na generacje (przechowywanie obiektów w pami ci) ........................66

Struktury ................................................................................................................... 67Interfejsy .................................................................................................................. 68

Jawna implementacja interfejsu ......................................................................69Zwalnianie zasobów niezarz dzanych ...................................................................... 70

Interfejs IDisposable .......................................................................................70S owo kluczowe using ....................................................................................71

Delegaty, metody anonimowe, wyra enia lambda i zdarzenia ................................. 72Delegaty ..........................................................................................................72Metody anonimowe ........................................................................................74Wyra enia lambda ..........................................................................................74Zdarzenia ........................................................................................................75

Dyrektywy preprocesora .......................................................................................... 76Wyj tki ..................................................................................................................... 77

Zg aszanie wyj tków ......................................................................................77Przepe nienia arytmetyczne ............................................................................78Instrukcje checked i unchecked ......................................................................78

Przestrzenie nazw ..................................................................................................... 79Zagnie d anie przestrzeni nazw ......................................................................79Dyrektywa using .............................................................................................81Aliasy ..............................................................................................................82Zewn trzne aliasy ...........................................................................................83

Kup książkę Poleć książkę

Page 5: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Spis tre ci 5

Typy, metody, klasy i kolekcje uogólnione (generyczne) ........................................ 83Metody generyczne .........................................................................................84Klasy generyczne ............................................................................................84Kolekcje generyczne i interfejsy .....................................................................86Interfejs IDictionary<TKey, TValue> — s ownik ..........................................86Interfejs IEnumerable<T> ...............................................................................87Interfejs ICollection<> ....................................................................................87Interfejs IList<> ..............................................................................................87Interfejs IQueryable<> ....................................................................................88

Wyra enia regularne ................................................................................................ 89Data i czas ................................................................................................................ 90Operacje wej cia, wyj cia, foldery i pliki ................................................................. 92

Pozosta e elementy j zyka i nowo ci w wersji C# 5.0 .................................................... 93Mechanizm refleksji i atrybuty ................................................................................. 93

Atrybuty ..........................................................................................................94IEnumerable a IEnumerator ..................................................................................... 96Iteratory i s owo kluczowe yield return .................................................................... 97Inicjalizatory obiektów i kolekcji ........................................................................... 100Drzewa wyra e ..................................................................................................... 101Metody rozszerzaj ce ............................................................................................. 102Metody i klasy cz ciowe ....................................................................................... 103

Metody cz ciowe .........................................................................................104Zmienne domniemane ............................................................................................ 105Typy anonimowe .................................................................................................... 105S owa kluczowe this i base ..................................................................................... 106Typy dynamiczne ................................................................................................... 107Argumenty nazwane — Named Arguments ........................................................... 110Parametry opcjonalne ............................................................................................. 111Obs uga kontra- i kowariancji oraz s owa kluczowe in i out .................................. 111S owa kluczowe is, as i typeof ............................................................................... 114Leniwa inicjalizacja — Lazy Initialization ............................................................. 114Metody asynchroniczne — async i await ............................................................... 118Atrybuty Caller Info ............................................................................................... 119

Nowo ci w C# 6.0 ........................................................................................................ 120Konstruktory pierwotne — Primary Constructors .................................................. 120Automatyczna inicjalizacja w a ciwo ci — Initializers for Auto-properties .......... 120Dyrektywa using dla sk adowych statycznych — Using Static Members .............. 121Inicjalizatory s ownikowe — Dictionary Initializer ............................................... 121Deklaracje inline dla parametrów out — Inline Declarations for Out Params ........ 122Wyra enia dla w a ciwo ci — Property Expressions ............................................. 122Wyra enia dla metod — Method Expressions ....................................................... 122Modyfikator private protected ................................................................................ 123Kolekcje IEnumerable jako parametr — Params for Enumerables ........................ 123Jednoargumentowe sprawdzanie warto ci null — Monadic Null Checking ........... 123S owo kluczowe await w blokach catch i finally .................................................... 124Filtry wyj tków — Exception Filters ..................................................................... 124Litera y binarne i separatory cyfr — Binary Literals, Digit Separators .................. 124

Rozdzia 2. Wzorce architektoniczne .............................................................. 125Architektura wielowarstwowa ...................................................................................... 125

Architektura jednowarstwowa ................................................................................ 126Architektura dwuwarstwowa .................................................................................. 126Architektura trójwarstwowa ................................................................................... 126Architektura n-warstwowa ..................................................................................... 126

Kup książkę Poleć książkę

Page 6: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

6 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

MVC ............................................................................................................................. 127View ....................................................................................................................... 128Controller ............................................................................................................... 128Model ..................................................................................................................... 128

Domain Model, MVC Model i ViewModel — porównanie .........................128Model pasywny a model aktywny .................................................................129

MVP ............................................................................................................................. 129Model ..................................................................................................................... 130View ....................................................................................................................... 130Presenter ................................................................................................................. 130

MVVM ......................................................................................................................... 131MVC, MVP i MVVM .................................................................................................. 131DDD ............................................................................................................................. 132SOA .............................................................................................................................. 132EDA .............................................................................................................................. 133

Rozdzia 3. Microsoft .NET Framework ........................................................... 135Struktura .NET ............................................................................................................. 135

CLI ......................................................................................................................... 136CIL ......................................................................................................................... 137CLR ........................................................................................................................ 137DLR ........................................................................................................................ 137Elementy .NET wykorzystywane w ASP.NET MVC ............................................ 138Implementacje .NET .............................................................................................. 138

Projekt Mono ................................................................................................139WPF .............................................................................................................................. 139WCF ............................................................................................................................. 140

Service Contract ..................................................................................................... 140Operation Contract ................................................................................................. 140Data Contract ......................................................................................................... 140Data Member .......................................................................................................... 140WCF Endpoint = adres + binding + contract .......................................................... 142

Silverlight ..................................................................................................................... 142Microsoft Azure ............................................................................................................ 143

Windows Azure Storage ......................................................................................... 143BLOB Storage ...............................................................................................143Table Storage ................................................................................................143Queue Storage ...............................................................................................143

Hostowanie aplikacji w Azure ................................................................................ 143Worker Role ..................................................................................................144Web Role ......................................................................................................144Web Site ........................................................................................................144Virtual Machine ............................................................................................144

Azure Service Bus .................................................................................................. 144Service Bus Relay .........................................................................................144Service Bus Queue ........................................................................................145Service Bus Topic .........................................................................................145

ASP.NET Web Forms .................................................................................................. 145ASP.NET Web Pages ................................................................................................... 146ADO.NET ..................................................................................................................... 146

Obiekt DataSet ....................................................................................................... 147Obiekty DataTable i DataRow ......................................................................147Obiekt DataRelation ......................................................................................147Obiekt DataView ..........................................................................................147

.NET Framework Data Provider ............................................................................. 147

Kup książkę Poleć książkę

Page 7: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Spis tre ci 7

LINQ ............................................................................................................................ 148LINQ to XML ........................................................................................................ 148LINQ to Objects ..................................................................................................... 149LINQ to SQL .......................................................................................................... 149LINQ to DataSet ..................................................................................................... 149LINQ to Entities ..................................................................................................... 149Przyk ady zapyta LINQ ........................................................................................ 150

Sk adnia metod — Method Syntax ...............................................................150Sk adnia zapyta — Query Syntax ...............................................................151

PLINQ .................................................................................................................... 151Narz dzia ORM w .NET .............................................................................................. 153

Entity Framework ................................................................................................... 153NHibernate ............................................................................................................. 153NHibernate 3 a Entity Framework 6 ....................................................................... 154Alternatywa dla Entity Framework i NHibernate ................................................... 154

Rozdzia 4. Entity Framework 6 ...................................................................... 157Podej cie do pracy z modelem danych ......................................................................... 157

Porównanie ró nych podej .................................................................................. 157Model dla podej cia Model First ............................................................................ 158Model dla podej cia Code First .............................................................................. 158

Nowo ci wprowadzane w kolejnych wersjach EF ........................................................ 159Nowo ci wprowadzone w EF 5 .............................................................................. 159Nowo ci wprowadzone w EF 6 .............................................................................. 160

Relacyjne bazy danych i EF ......................................................................................... 160Krótki opis baz relacyjnych .................................................................................... 160Relacja „jeden do wielu” ........................................................................................ 161Relacja „jeden do jednego” .................................................................................... 161Relacja „wiele do wielu” ........................................................................................ 162Relacje opcjonalne ................................................................................................. 165

Obiekty DbContext i DbSet .......................................................................................... 165DbContext i DbSet ................................................................................................. 165Metody Attach i Detach ......................................................................................... 165

Relacje poprzez klucz FK a relacje niezale ne (obiektowe) ......................................... 166Relacje poprzez klucz obcy — FK Association ..................................................... 166Relacje niezale ne — Independent Association ..................................................... 167

Odpytywanie bazy danych za pomoc EF i LINQ ........................................................ 168Wczytywanie zach anne — Eager Loading ............................................................ 168Wczytywanie leniwe — Lazy Loading .................................................................. 169Jawne adowanie — Explicit Loading .................................................................... 170Problem N+1 .......................................................................................................... 170Metoda AsNoTracking() ........................................................................................ 171Odroczone i natychmiastowe wykonanie ............................................................... 171Entity SQL ............................................................................................................. 172Bezpo rednie zapytania SQL do bazy (Direct/RAW SQL)

i procedury sk adowane w EF ............................................................................. 173Transakcje w EF ........................................................................................................... 174

ledzenie zmian ............................................................................................................ 175Migawkowe ledzenie zmian — Snapshot Change Tracking ................................. 175Dynamiczne ledzenie zmian — Dynamic Change Tracking (proxy) .................... 175

Zarz dzanie operacjami wspó bie nymi ....................................................................... 176Kaskadowe usuwanie — Cascade Delete ..................................................................... 177

Kup książkę Poleć książkę

Page 8: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

8 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

Strategie dziedziczenia w bazie danych — TPT, TPH i TPC ....................................... 178TPH ........................................................................................................................ 178TPT ........................................................................................................................ 178TPC ........................................................................................................................ 179

SQL Logging ................................................................................................................ 179Code First Fluent API i Data Annotations .................................................................... 180Migracje ....................................................................................................................... 182

Metoda Seed ........................................................................................................... 183

Rozdzia 5. ASP.NET MVC 5 ........................................................................... 185Kolejne wersje ASP.NET MVC ................................................................................... 185

ASP.NET MVC 1 ................................................................................................... 185ASP.NET MVC 2 ................................................................................................... 185ASP.NET MVC 3 ................................................................................................... 186ASP.NET MVC 4 ................................................................................................... 186ASP.NET MVC 5 ................................................................................................... 186ASP.NET MVC 6 (zapowied ) .............................................................................. 187

Konwencje w MVC ...................................................................................................... 187Struktura projektu ................................................................................................... 187Konwencje a ASP.NET MVC ................................................................................ 188

MVC Pipeline — cie ka wywo a , handlery i modu y ............................................... 189cie ka wywo a .................................................................................................... 189

Pierwsze danie do aplikacji ASP.NET ......................................................189Podstawowe obiekty tworzone dla ka dego dania .....................................189HttpApplication ............................................................................................190

Uchwyty i modu y HTTP ....................................................................................... 193Uchwyty HTTP .............................................................................................193Modu y HTTP ...............................................................................................193HttpHandler a HttpModule ...........................................................................193

Kontroler ...................................................................................................................... 194Typy rezultatu ........................................................................................................ 194Parametry akcji ....................................................................................................... 196

danie GET .......................................................................................................... 196danie POST ........................................................................................................ 196

Filtry akcji .............................................................................................................. 197Widok ........................................................................................................................... 200

Zasady odnajdywania widoków ............................................................................. 200Folder Shared ......................................................................................................... 201Widoki cz ciowe .................................................................................................. 201Razor ...................................................................................................................... 202

Dodatkowe w a ciwo ci silnika Razor ..........................................................203ViewBag, ViewData i TempData ........................................................................... 204Widoki typowane — Strongly Typed Views .......................................................... 205HTML helpery ....................................................................................................... 208Paczki skryptów i minimalizacja — Script/CSS Bundling and Minification ......... 209

Sekcje ........................................................................................................................... 211Routing ......................................................................................................................... 214

Kolejno w routingu ............................................................................................. 214Ignorowanie cie ek ............................................................................................... 214Ograniczenia .......................................................................................................... 215Routing na podstawie atrybutów ............................................................................ 215

Prefiksy .........................................................................................................216Ograniczenia .................................................................................................217Nazywanie cie ek i generowanie linków po nazwie cie ki ........................217Obszary .........................................................................................................217

Kup książkę Poleć książkę

Page 9: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Spis tre ci 9

Model ........................................................................................................................... 218ViewModel ............................................................................................................. 218

Walidacja ...................................................................................................................... 222MVC Scaffolding ......................................................................................................... 223

Generowanie kontrolerów ...................................................................................... 223Generowanie widoków ........................................................................................... 227

Metody synchroniczne i asynchroniczne w MVC ........................................................ 228S owa kluczowe — Async, Await, Task ................................................................ 230

Cache ............................................................................................................................ 231Cachowanie po stronie serwera — Server Side Caching ........................................ 231

Atrybut OutputCache ....................................................................................232Cachowanie cz ciowe .................................................................................233Cachowanie rozproszone ..............................................................................233

Cachowanie po stronie klienta — Client Side Caching .......................................... 234Cachowanie w HTML 5 ......................................................................................... 234

HTML 5 Application Cache ..........................................................................234HTML 5 WebStorage ...................................................................................234

Code First Data annotations .......................................................................................... 235Bezpiecze stwo ............................................................................................................ 235

SQL Injection ......................................................................................................... 236Cross-Site Request Forgery .................................................................................... 236Cross-Site Scripting ................................................................................................ 237Over-Posting — parametr binding ......................................................................... 237

Obs uga, ledzenie i logowanie wyj tków w MVC ...................................................... 238Lokalne zarz dzanie wyj tkami ............................................................................. 238

Blok try-catch ...............................................................................................238Nadpisywanie metody OnException() w kontrolerze ...................................238

Globalne zarz dzanie wyj tkami ............................................................................ 239Klasa FilterConfig .........................................................................................239HandleError na poziomie kontrolerów i akcji ...............................................239Zwracanie widoków dostosowanych do konkretnych typów wyj tków .......240

Logowanie globalne za pomoc osobnych narz dzi ............................................... 240Identyfikacja, uwierzytelnianie i autoryzacja w MVC 5 ............................................... 241

Identyfikacja ........................................................................................................... 241Uwierzytelnianie .................................................................................................... 241Autoryzacja ............................................................................................................ 242

Role w MVC .................................................................................................242Stan aplikacji, sesje i ciasteczka ............................................................................. 242

Stan aplikacji .................................................................................................242Ciasteczka .....................................................................................................243Sesje ..............................................................................................................243

OWIN ..................................................................................................................... 244ASP.NET Identity .................................................................................................. 244WIF i uwierzytelnianie za pomoc claimów .......................................................... 245

Identity Provider, STS ..................................................................................246Strona ufaj ca — Relying Party ....................................................................246

Federated Authentication ....................................................................................... 247Windows ACS ........................................................................................................ 248OpenId i OpenAuth ................................................................................................ 249

OpenId ..........................................................................................................249OpenAuth ......................................................................................................250

Kup książkę Poleć książkę

Page 10: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

Rozdzia 6. Web serwisy i ASP.NET Web API 2 ............................................... 251Web API 2 .................................................................................................................... 251Web API a ASP.NET MVC ......................................................................................... 252Web serwis, REST, SOAP i OData .............................................................................. 253

SOAP ..................................................................................................................... 253REST ...................................................................................................................... 253OData ..................................................................................................................... 254

CORS i JSONP ............................................................................................................. 255JSONP .................................................................................................................... 255CORS ..................................................................................................................... 255

Uruchamianie CORS w Web API .................................................................256Routing w Web API ..................................................................................................... 257

Mapowanie da na akcje b d metody w kontrolerze Web API ......................... 257Web API a Entity Framework i warstwa modelu ......................................................... 258Typy rezultatu w Web API ........................................................................................... 258

Typ void ................................................................................................................. 259HttpResponseMessage ............................................................................................ 259IHttpActionResult .................................................................................................. 260Inny dowolny typ z aplikacji .................................................................................. 260

Pobieranie danych z Web API ...................................................................................... 261Pobieranie danych po stronie serwera (.NET, C#) ................................................. 261Pobieranie danych po stronie klienta (JavaScript, jQuery, AJAX) ......................... 261

Wersjonowanie w Web API ......................................................................................... 262

Rozdzia 7. Narz dzia, licencje i ceny ............................................................. 263Serwer IIS ..................................................................................................................... 263

Kategorie dla modu ów dost pnych w IIS .............................................................. 263Pule aplikacji w IIS ................................................................................................ 264Przetwarzanie da w IIS ..................................................................................... 264

Microsoft SQL Server 2014 .......................................................................................... 264Licencjonowanie SQL Server 2014 ........................................................................ 265Ceny licencji SQL Server 2014 .............................................................................. 265Nowo ci w SQL Server 2014 ................................................................................. 266

Windows Server 2012 .................................................................................................. 267Wersje Windows Server 2012 ................................................................................ 267Licencjonowanie Windows Server 2012 ................................................................ 267Ceny Windows Server 2012 ................................................................................... 268

Microsoft Visual Studio 2013 Ultimate .......................................................................... 268Snippety ................................................................................................................. 269Page Inspector ........................................................................................................ 269Nowo ci w Visual Studio 2013 .............................................................................. 269

Poprawiony pasek przewijania ......................................................................270Podgl d definicji ...........................................................................................270Browser Link ................................................................................................270JSON Editor i JavaScript ..............................................................................271Powi zanie z Microsoft Azure ......................................................................272Wsparcie dla GIT ..........................................................................................272

Najwa niejsze skróty klawiszowe .......................................................................... 272

Rozdzia 8. Aplikacja i wdro enie .................................................................... 277Wzorce projektowe i architektoniczne wykorzystywane w .NET ................................ 277

Repozytorium ......................................................................................................... 277Wzorzec IoC ........................................................................................................... 277Repozytorium generyczne ...................................................................................... 278Wzorzec UnitOfWork ............................................................................................ 278

Kup książkę Poleć książkę

Page 11: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Spis tre ci 11

Przyk adowa aplikacja .................................................................................................. 278Etap 1. Krok 1. Tworzenie nowego projektu i aktualizacja pakietów .................... 279Etap 1. Krok 2. Utworzenie modelu danych ........................................................... 283

Klasa Kategoria .............................................................................................286Klasa Ogloszenie_Kategoria .........................................................................287Klasa Uzytkownik .........................................................................................287

Etap 1. Krok 3. Tworzenie klasy kontekstu ............................................................ 290Etap 1. Krok 4. Przenoszenie warstwy modelu do osobnego projektu ................... 294

Dodawanie referencji pomi dzy projektami .................................................296Ustawienie projektu startowego ....................................................................297Instalacja bibliotek dla nowego projektu .......................................................298Przenoszenie plików z modelem do osobnej warstwy (projektu) ..................299

Etap 1. Krok 5. Migracje ........................................................................................ 300Instalacja migracji .........................................................................................300Konfiguracja migracji ...................................................................................301Tworzenie migracji pocz tkowej ..................................................................302Uruchomienie pierwszej migracji .................................................................305Metoda Seed() ...............................................................................................306Zmiany w modelu i kolejna migracja ............................................................309Praca z b dami i niespójno ci w migracjach ..............................................310

Etap 1. Podsumowanie (warstwa modelu i migracje) ............................................. 311Etap 2. Krok 1. Dodawanie kontrolerów i widoków — akcja Index ...................... 311

Dodawanie kontrolera z widokami ...............................................................311Pierwsze uruchomienie aplikacji i routing ....................................................316Lista og osze (akcja Index) — aktualizacja widoku/wygl du strony ..........317Lista og osze a pobieranie danych ..............................................................321Optymalizacja listy og osze ........................................................................322

Etap 2. Krok 2. Debugowanie oraz metody AsNoTracking() i ToList() ................ 324Sprawdzanie warto ci zmiennych .................................................................325Metoda ToList() i odroczone wykonanie (Deferred Execution) ...................325Metoda AsNoTracking() ...............................................................................326

Etap 2. Krok 3. Poprawa wygl du i optymalizacja pod k tem SEO ....................... 329Poprawa wygl du strony za pomoc Twitter Bootstrap ................................329Pod wietlanie wierszy za pomoc CSS .........................................................330Optymalizacja pod k tem pozycjonowania — SEO .....................................331

Etap 2. Podsumowanie ........................................................................................... 333Etap 3. Krok 1. Poprawa architektury aplikacji ...................................................... 334

Przeniesienie zapytania LINQ do osobnej metody ........................................334Przeniesienie metody do repozytorium .........................................................334

Etap 3. Krok 2. Zastosowanie kontenera Unity — IoC .......................................... 336Wstrzykiwanie repozytorium poprzez konstruktor w kontrolerze .................336Tworzenie interfejsu dla repozytorium .........................................................337Instalacja kontenera IoC Unity ......................................................................338Wstrzykiwanie kontekstu do repozytorium ...................................................340Cykl ycia obiektu a kontener IoC ................................................................341

Etap 3. Podsumowanie ........................................................................................... 341Etap 4. Krok 1. Akcje Details, Create, Edit, Delete ................................................ 342

Details ...........................................................................................................342Metoda Details() w repozytorium .................................................................342Aktualizacja i optymalizacja SEO dla widoku Details .................................. 343Delete ............................................................................................................345Create ............................................................................................................353Edit ................................................................................................................359

Kup książkę Poleć książkę

Page 12: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

12 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

Etap 4. Krok 2. Aktualizacja szablonu _Layout.cshtml .......................................... 365Etap 4. Krok 3. Widoki cz ciowe — PartialViews ............................................... 366Etap 4. Podsumowanie ........................................................................................... 369Etap 5. Bezpiecze stwo, uwierzytelnianie i autoryzacja dost pu ........................... 369

Uwierzytelnianie i logowanie przez portale ..................................................369Autoryzacja — role .......................................................................................372Zabezpieczanie akcji .....................................................................................373

Etap 5. Podsumowanie ........................................................................................... 380Etap 6. Stronicowanie i sortowanie ........................................................................ 381

Stronicowanie ...............................................................................................381Sortowanie ....................................................................................................388

Etap 6. Podsumowanie ........................................................................................... 392Etap 7. Og oszenia u ytkownika, kategorie, cache i ViewModel ........................... 393

Zak adka Moje og oszenia ............................................................................393Cache ............................................................................................................394Kategorie .......................................................................................................395Zastosowanie HTML helpera — Html.Action ..............................................402Zastosowanie ViewModel .............................................................................403

Etap 7. Podsumowanie ........................................................................................... 406Etap 8. Dane w JSON, zarz dzanie relacj „wiele do wielu” i attribute routing .... 407

PartialView a dane w formacie JSON lub XML ...........................................407U ycie attribute routingu ..............................................................................407Zarz dzanie relacj „wiele do wielu” i autocomplete ...................................409Dodatek na AspNetMvc.pl ............................................................................409

Etap 8. Podsumowanie ........................................................................................... 410Etap 9. Dodatek — tworzenie modelu dla podej cia Model First .......................... 410

Publikacja systemu na zewn trznym serwerze hostingowym ....................................... 415Dodawanie domeny ................................................................................................ 416Konfiguracja witryny ............................................................................................. 418Tworzenie bazy danych .......................................................................................... 421Tworzenie konta FTP ............................................................................................. 422Po czenie z baz danych poprzez SQL Server Management Studio ..................... 422Wdra anie aplikacji na serwer za pomoc Microsoft Visual Studio ...................... 423

Dodatek A Zasady i metodologie w programowaniu ........................................ 427Zasady .......................................................................................................................... 427

SOLID .................................................................................................................... 427Zasada pojedynczej odpowiedzialno ci (SRP) ..............................................427Zasada otwarte-zamkni te (OCP) .................................................................428Zasada podstawienia Liskov (LSP) ...............................................................428Zasada separacji interfejsów (ISP) ................................................................429Zasada odwrócenia zale no ci (DIP) ............................................................431

GRASP ................................................................................................................... 432Creator ..........................................................................................................433Information Expert ........................................................................................433Controller ......................................................................................................433Low Coupling ...............................................................................................433High Cohesion ..............................................................................................434Polymorphism ...............................................................................................434Pure Fabrication ............................................................................................434Indirection .....................................................................................................435Protected Variations ......................................................................................435

DRY ....................................................................................................................... 435KISS ....................................................................................................................... 436

Kup książkę Poleć książkę

Page 13: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Spis tre ci 13

Rule of Three .......................................................................................................... 436Separation of Concern ............................................................................................ 436YAGNI ................................................................................................................... 437MoSCoW ................................................................................................................ 437

Metodologie .................................................................................................................. 437Manifest Agile ........................................................................................................ 437Scrum ..................................................................................................................... 439eXtreme Programming ........................................................................................... 439TDD ....................................................................................................................... 440

Dodatek B HTTP i SSL/TLS ........................................................................... 443HTTP ............................................................................................................................ 443SSL/TLS ....................................................................................................................... 447

Rodzaje certyfikatów .............................................................................................. 449Zakup certyfikatu SSL ............................................................................................ 450Aktywacja, walidacja i instalacja certyfikatu SSL ................................................. 450Certyfikat w praktyce ............................................................................................. 450

Dodatek C HTML 5 i CSS 3 ........................................................................... 453HTML 5 ........................................................................................................................ 453

Sekcje ..................................................................................................................... 457Nowe typy pól formularza ...................................................................................... 458Atrybuty dla formularza ......................................................................................... 459Znaczniki ................................................................................................................ 459Web Storage ........................................................................................................... 461Server Side Events ................................................................................................. 461WebSockets ............................................................................................................ 462Drag and Drop ........................................................................................................ 463Geolokalizacja ........................................................................................................ 465Walidacja ............................................................................................................... 466

CSS 3 ............................................................................................................................ 466Nowe selektory ....................................................................................................... 471Nowe w asno ci ..................................................................................................... 472Twitter Bootstrap .................................................................................................... 473

CSS 4 ............................................................................................................................ 473

Dodatek D HTML DOM i JavaScript ................................................................ 477HTML DOM ................................................................................................................ 477

Metody dost pne w DOM ...................................................................................... 477W a ciwo ci dost pne w DOM .............................................................................. 479Poziomy DOM ....................................................................................................... 479

JavaScript ..................................................................................................................... 480Sk adnia j zyka ...................................................................................................... 480Mo liwo ci JavaScriptu ......................................................................................... 483JQuery .................................................................................................................... 484

Instalacja jQuery ...........................................................................................485Selektory i filtry ............................................................................................485Zdarzenia ......................................................................................................487Efekty w postaci animacji .............................................................................488Metody ..........................................................................................................488Przechodzenie po elementach HTML ...........................................................489

JQuery UI ............................................................................................................... 490JQuery Mobile ........................................................................................................ 490

Kup książkę Poleć książkę

Page 14: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

14 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

AJAX ..................................................................................................................... 491JSON .............................................................................................................492XMLHttpRequest ..........................................................................................493AJAX w jQuery ............................................................................................494

Dodatek E Bazy nierelacyjne ......................................................................... 497MongoDB ..................................................................................................................... 498RavenDB ...................................................................................................................... 498

Dodatek F Podstawy pozycjonowania w Google ............................................. 499Metatagi ........................................................................................................................ 499

Znacznik <title> ..................................................................................................... 500Opis strony ............................................................................................................. 500S owa kluczowe ..................................................................................................... 500Warto ci noindex i nofollow .................................................................................. 500

Znaczniki HTML .......................................................................................................... 500Linkowanie ................................................................................................................... 501Zaplecze, katalogi stron i precle ................................................................................... 502

Skrypty katalogów .................................................................................................. 502Skrypty blogowe .................................................................................................... 503

Schematy linkowania .................................................................................................... 503Schemat ko a .......................................................................................................... 503Schemat piramidy ................................................................................................... 504Gwiazda ................................................................................................................. 504Schematy mieszane ................................................................................................ 505

Linkowanie wewn trzne ............................................................................................... 505„D ugi ogon” ................................................................................................................ 505Przyjazne adresy URL — Friendly URL ...................................................................... 506Pliki zwi zane z pozycjonowaniem .............................................................................. 506

robots.txt ................................................................................................................ 506sitemap.xml ............................................................................................................ 507.htaccess ................................................................................................................. 508

Filtry i kary ................................................................................................................... 509Ban ......................................................................................................................... 509Sandbox .................................................................................................................. 509

Zmiany algorytmu Google ............................................................................................ 510Panda ...................................................................................................................... 510Pingwin .................................................................................................................. 510EDM ....................................................................................................................... 511

Narz dzia zwi zane z pozycjonowaniem ..................................................................... 511Google Analytics i Google Webmasters Tools ....................................................... 511Narz dzia do pracy z tekstem ................................................................................. 511Systemy wymiany linków ...................................................................................... 512Pó automaty, „dodawarki” i automaty do postowania ............................................ 512Inne narz dzia ........................................................................................................ 513

Skorowidz .................................................................................... 515

Kup książkę Poleć książkę

Page 15: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Rozdzia 4.

Entity Framework 6Entity Framework (EF) jest odpowiedzialny za kontakt aplikacji z baz danych. Domy lneoperacje wykonywane na bazie danych to operacje CRUD (ang. Create, Read, Update,Delete). Dzi ki EF i Scaffolding (automatyczny generator kodu) mo na automatyczniewygenerowa kod odpowiedzialny za operacje CRUD dla ka dej tabeli z bazy danych.

Podej cie do pracy z modelem danychEF udost pnia trzy podej cia do pracy z warstw dost pu do danych DAL (ang. DataAccess Layer):

Model First — tworzy si diagram ERD (ang. Entity-Relationship Diagram)w Visual Studio za pomoc Model Designera i na podstawie diagramugenerowana jest baza danych (kod SQL) oraz wszystkie klasy z modelemdanych, po jednej dla ka dej tabeli.

Code First — tworzy si samodzielnie klasy (odpowiadaj ce tabelom w baziedanych) i na podstawie klas generowana jest baza danych (kod SQL); dodatkowo,aby uaktualni baz danych po zmianach wprowadzonych w plikach z klasami,wykorzystuje si migracje (aktualizacje bazy danych).

Database First — klasy i diagram ERD s generowane lub uaktualnianena podstawie istniej cej bazy danych.

Porównanie ró nych podejModel First pozwala na szybkie utworzenie bazy danych poprzez wstawianie elementóww edytorze graficznym, ale nie daje takiej kontroli nad kodem jak Code First. W przy-padku korzystania z Code First trzeba r cznie tworzy pliki z klasami, co powoduje,e mo na si atwo pomyli . Database First z kolei jest wykorzystywany w przypadku,

gdy tworzy si aplikacj na podstawie ju istniej cej bazy danych. Dodatkowo powybraniu bazy danych, na podstawie której chce si utworzy projekt, wybiera si ,czy w dalszej cz ci zostanie u yte podej cie Code First, czy Model First. W zale -no ci od wyboru utworzone zostan klasy (Code First) lub diagram (Model First).

Kup książkę Poleć książkę

Page 16: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

158 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

Najwi ksz kontrol nad kodem daje podej cie Code First. Dla pocz tkuj cych podej cieModel First b dzie bardziej intuicyjne, poniewa baza jest prezentowana w formiediagramu ERD.

Model dla podej cia Model FirstModel danych dla podej cia Model First jest zawarty w pliku .edmx. Domy lnie modeljest prezentowany jako diagram ERD w Entity Designerze (narz dzie w Visual Studiodo tworzenia diagramu ERD).

Na pe ny model danych w podej ciu Model First sk adaj si trzy cz ci:

model konceptualny (ang. Conceptual Schema Definition Language),

model ród a danych (ang. Storage Schema Definition Language),

cz odwzorowuj ca (ang. Mapping Specification Language).

Wszystkie cz ci znajduj si w jednym pliku .edmx. Jest to plik XML. Na podstawiepliku .edmx generowany jest schemat bazy danych — diagram ERD.

Przyk adowy schemat bazy danych utworzony w Entity Designerze prezentujerysunek 4.1.

Model dla podej cia Code FirstPrzyk adowa klasa z modelem dla podej cia Code First znajduje si na listingu 4.1.Jest to klasa POCO (ang. plain-old CLR objects), czyli klasa, która odwzorowuje strukturtabeli z bazy danych na klas w podej ciu obiektowym.

Listing 4.1. Przyk adowa klasa POCO

public partial class Kurs{ public Kurs() { this.KursUser = new HashSet<KursUser>(); } public int Id { get; set; } public string Skad { get; set; } public string Dokad { get; set; } public System.DateTime DataWyjazdu { get; set; } public System.DateTime DataDodania { get; set; }

public virtual ICollection<KursUser> KursUser { get; set; }}

Kup książkę Poleć książkę

Page 17: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Rozdzia 4. Entity Framework 6 159

Rysunek 4.1. Diagram ERD z Entity Designera

Nowo ci wprowadzanew kolejnych wersjach EF

Nowo ci wprowadzone w EF 5Najwa niejsze nowo ci wprowadzone w EF 5 to:

mo liwo tworzenia wielu diagramów dla jednego modelu (Model First);

wsparcie dla typu wyliczeniowego enum w Code First i Model First;

wsparcie dla typów danych przestrzennych (ang. spatial data types) w CodeFirst i Model First;

Kup książkę Poleć książkę

Page 18: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

160 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

TVF (ang. Table-Valued Functions) w Model First — podobne do procedursk adowanych, z jedn ma ró nic — dane z TVF mog by u ytew zapytaniach LINQ, natomiast dane z procedury sk adowanej nie.

Nowo ci wprowadzone w EF 6Najwa niejsze nowo ci wprowadzone w EF 6 to:

w asne konwencje w Code First;

poprawiona wydajno dla du ych modeli w podej ciu Code First;

migracje dla wielu kontekstów do jednej bazy danych;

automatyczne ponawianie transakcji (ang. Connection Resiliency), w przypadkugdy zako czy si ona niepowodzeniem;

tworzenie nowych kontekstów dla otwartego po czenia;

poprawione wsparcie dla transakcji;

wstrzykiwanie implementacji w czasie dzia ania programu (ang. DependencyResolution) oraz wsparcie dla wzorców Service Locator i IoC;

atwe przechwytywanie logów (ang. Interception/SQL Logging), zapyta SQLgenerowanych przez EF.

Relacyjne bazy danych i EF

Krótki opis baz relacyjnychBazy relacyjne powsta y w czasach, gdy przestrze dyskowa by a do du ym ograni-czeniem dla programów. Dyski mia y pojemno ci liczone w megabajtach, a nie — jakobecnie — w terabajtach. Aby oszcz dzi miejsce na dysku, dane musia y by przecho-wywane w oszcz dny sposób bez duplikacji wpisów. Relacyjne bazy danych sk adajsi z tabel, pomi dzy którymi zachodz relacje. Ka da tabela sk ada si z wierszyi kolumn. Na ka dy wiersz sk adaj si jednakowo u o one kolumny wype nione warto-ciami, które z kolei w ka dym wierszu mog by inne. Ka dy wiersz ma swój unikalny

numer zwany kluczem podstawowym PK (ang. Primary Key), po którym mo na roz-pozna konkretny wiersz danych (np. konkretnego pracownika z tabeli Pracownik).Aby powi za wiersz z jednej tabeli z wierszem znajduj cym si w innej tabeli, nale yumie ci w niej klucz obcy FK (ang. Foreign Key). Jest to ta sama warto , któraw pierwszej tabeli jest kluczem podstawowym (PK). Druga tabela mo e np. zawieramiejsce zamieszkania pracownika, które mo e by wspólne dla kilku pracowników.Dzi ki takiemu rozwi zaniu zostanie utworzona relacja pomi dzy tabelami. Istniejekilka rodzajów relacji.

Kup książkę Poleć książkę

Page 19: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Rozdzia 4. Entity Framework 6 161

Relacja „jeden do wielu”Relacja „jeden do wielu” polega na tym, e do jednego wiersza w tabeli mo e by przypi-sanych kilka wierszy z innej tabeli. Przyk adowo jeden klient mo e mie kilka zamó-wie . Klucz obcy znajduje si w tabeli z zamówieniem i ma tak sam warto jakklucz podstawowy z tabeli klienta. Po kluczu obcym mo na odczyta wi cej danychna temat klienta, który z o y zamówienie, dzi ki czemu nie trzeba do ka dego zamó-wienia zapisywa tych samych danych pojedynczego klienta. Taka operacja odczytudodatkowych danych z drugiej tabeli nazywana jest „joinem”. Na listingu 4.2 przedsta-wiono przyk adow relacj „jeden do wielu” dla podej cia Code First, a na rysunku 4.2zaprezentowano t sam relacj w podej ciu Model First.

Listing 4.2. Przyk ad relacji „jeden do wielu” w podej ciu Code First

public class Ogloszenie{ public Ogloszenie() { } public int Id { get; set; } public string Tresc { get; set; } public System.DateTime DataDodania { get; set; }

public string UzytkownikId { get; set; }

public Uzytkownik Uzytkownik { get; set; }}

public class Uzytkownik{ public Uzytkownik() { this.Ogloszenie = new HashSet<Ogloszenie>(); } public int Id { get; set; } public string Imie { get; set; } public string Nazwisko { get; set; }

public virtual ICollection<Ogloszenie> Ogloszenie { get; private set; }}

Relacja „jeden do jednego”Relacja „jeden do jednego” wyst puje, gdy jeden wiersz z pierwszej tabeli jest powi za-ny z tylko jednym rekordem z drugiej tabeli. Taka relacja mo e mie sens np. wtedy,gdy chcesz przechowywa dodatkowe informacje na temat u ytkownika, jednak niechcesz, aby by y one w tej samej tabeli, lub gdy u ytkownik mo e pe ni tylko jednfunkcj w firmie. Na listingu 4.3 przedstawiono przyk adow relacj „jeden do jednego”dla podej cia Code First, a na rysunku 4.3 zaprezentowano t sam relacj w podej-ciu Model First.

Kup książkę Poleć książkę

Page 20: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

162 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

Rysunek 4.2.Przyk ad relacji„jeden do wielu”w podej ciuModel First

Listing 4.3. Przyk ad relacji „jeden do jednego” w podej ciu Code First

public class Uzytkownik{ public Uzytkownik() { } public int Id { get; set; } public string Imie { get; set; } public string Nazwisko { get; set; }

[Required] public virtual Adres Adres { get; private set; }}

public class Adres{ public Adres() { } [Key, ForeignKey(„Uzytkownik”)] public int Id { get; set; } public string Miasto { get; set; }

public virtual Uzytkownik Uzytkownik { get; set; }}

Rysunek 4.3.Przyk ad relacji„jeden do jednego”w podej ciu ModelFirst

Relacja „wiele do wielu”Relacja „wiele do wielu” wyst puje, gdy jeden wiersz z pierwszej tabeli mo e bypowi zany z wieloma wierszami z drugiej tabeli, a jeden wiersz z drugiej tabeli mo eby powi zany z kilkoma wierszami z pierwszej tabeli. Przyk adowo pracownik mo e

Kup książkę Poleć książkę

Page 21: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Rozdzia 4. Entity Framework 6 163

mie przypisanych wiele adresów, a jeden adres mo e by przypisany do wielu pracowni-ków. Oczywi cie nie chodzi tu o to, e w tabeli s zapisane te same dane, tylko o to,e klucz obcy pokazuje na ten sam wiersz w tabeli. Relacje „wiele do wielu” rozk ada

si na dwie relacje „jeden do wielu” i dodaje trzeci tabel pomi dzy tabelami, któremaj relacj „wiele do wielu”. Proces taki zabezpiecza przed redundancj danych(powtarzaniem tych samych danych). Nowa, rodkowa tabela ma dwa klucze obce:jeden do tabeli pierwszej, a drugi do drugiej. W podej ciu obiektowym w EF mo liwejest tworzenie relacji „wiele do wielu” bez dodatkowej klasy dla po redniej tabeli. EFautomatycznie przet umaczy takie powi zanie i w bazie danych pojawi si trzecia tabela.Tabela po rednia b dzie niewidoczna z punktu widzenia kodu, jednak b dzie si znaj-dowa a w bazie danych. Na listingach przedstawiono przyk adow relacj „wiele dowielu” dla podej cia Code First bez dodatkowej tabeli (listing 4.4) i z dodatkow tabel(listing 4.5), a na rysunkach zaprezentowano t sam relacj w podej ciu Model Firstbez dodatkowej tabeli (rysunek 4.4) i z dodatkow tabel (rysunek 4.5).

Listing 4.4. Przyk ad relacji „wiele do wielu” w podej ciu Code First bez dodatkowej tabeli

public class Uzytkownik{ public Uzytkownik() { this.Wiadomosc = new HashSet<Wiadomosc>(); } public int Id { get; set; } public string Imie { get; set; }

public string Nazwisko { get; set; }

public virtual ICollection<Wiadomosc> Wiadomosc { get; private set; }}

public class Wiadomosc{ public Wiadomosc () { this.Uzytkownik = new HashSet<Uzytkownik>(); } public int Id { get; set; } public string Tresc { get; set; }

public virtual ICollection<Uzytkownik> Uzytkownik { get; private set; }}

Listing 4.5. Przyk ad relacji „wiele do wielu” w podej ciu Code First z dodatkow tabel

public class Uzytkownik{ public Uzytkownik() { this.Wiadomosc = new HashSet<Wiadomosc>(); } public int Id { get; set; } public string Imie { get; set; }

Kup książkę Poleć książkę

Page 22: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

164 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

public string Nazwisko { get; set; } public virtual ICollection<Uzytkownik_Wiadomosc> Uzytkownik_Wiadomosc { get; private set; }}

public class Uzytkownik_Wiadomosc{ public int Id { get; set; } public string UzytkownikId { get; set; } public int WiadomoscId { get; set; } public virtual Uzytkownik Uzytkownik { get; set; } public virtual Wiadomosc Wiadomosc { get; set; }}

public class Wiadomosc{ public Wiadomosc() { this.Uzytkownik_Wiadomosc = new HashSet<Uzytkownik_Wiadomosc>(); } public int Id { get; set; } public string Tresc { get; set; }

public virtual ICollection<Uzytkownik_Wiadomosc> Uzytkownik_Wiadomosc { get; private set; }}

Rysunek 4.4. Przyk ad relacji „wiele do wielu” w podej ciu Model First bez dodatkowej tabeli

Rysunek 4.5. Przyk ad relacji „wiele do wielu” w podej ciu Model First z dodatkow tabel

Kup książkę Poleć książkę

Page 23: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Rozdzia 4. Entity Framework 6 165

Relacje opcjonalneRelacje opcjonalne oznaczaj , e dana relacja mo e, ale nie musi wyst pi . Du e zna-czenie ma koniec, na którym znajduje si relacja opcjonalna. Przyk adowo klient mo e,ale nie musi posiada dodatkowych danych, dlatego relacja opcjonalna musi by postronie tabeli klienta, poniewa dane dodatkowe zawsze b d powi zane z klientem.Nie mo e by danych dodatkowych bez klienta, natomiast klient mo e by bez danychdodatkowych. Taka relacja to relacja 0..1 do 1.

Podobnie wygl da sytuacja z relacj 0..1 do wielu. W przypadku takiej relacji mo eistnie wiele og osze , ale og oszenie niekoniecznie musi by powi zane z u ytkow-nikiem.

Obiekty DbContext i DbSet

DbContext i DbSetDbContext to obiekt odpowiedzialny za prac z danymi. DbContext zajmuje si odczytemdanych z bazy danych, ledzeniem stanu obiektów, zarz dzaniem i powi zaniamipomi dzy danymi w pami ci, t umaczeniem danych relacyjnych na obiektowe i zapisemdanych do bazy. W klasie DbContext znajduj si w a ciwo ci DbSet, które reprezentujkolekcje okre lonych klas (tabel) znajduj cych si w obiekcie kontekstu (listing 4.6).

Listing 4.6. Przyk adowa klasa DbContext

public class ProduktContext : DbContext{ public DbSet<Kategoria> Kategorie { get; set; } public DbSet<Produkt> Produkty { get; set; }}

Obiekt kontekstu jest przechowywany w pami ci do czasu, a zostanie usuni ty przezGarbage Collector lub zostanie wywo ana metoda Dispose() na jego instancji. W apli-kacji internetowej obiekt DbContext powinien by tworzony dla ka dego dania HTTP.Czas ycia takiego obiektu powinien by jak najkrótszy, poniewa nie zostanie onponownie u yty.

Metody Attach i DetachDane pobierane z bazy s automatycznie przypisywane do kontekstu. Wyj tkiem s tutajzapytania AsNoTracking(), których wynik nie jest zapisywany do kontekstu, wi c danenie s ledzone (mo liwe jest przy czenie takich danych za pomoc metod). PoniewaDbContext przechowuje dane w postaci obiektowej, mo liwe jest od czenie obiektu odkontekstu lub przy czenie obiektu pochodz cego z innego ród a, innego kontekstu b d

Kup książkę Poleć książkę

Page 24: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

166 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

obiektu wcze niej od czonego od kontekstu (równie z innej instancji kontekstu).Obiekty od czone od kontekstu nie maj ledzonego stanu przez DbContext i nie mogzosta zapisane do bazy danych.

Istniej metody pozwalaj ce na przy czenie obiektu do kontekstu:

AddObject() dodaje i ustawia stan obiektu na Added (dodany). Dla obiektówze stanem Added klucz podstawowy (PK) nie musi mie unikalnej warto ci,poniewa podczas zapisu i tak zostanie wygenerowany przez baz danych.

Attach() dodaje do kontekstu i ustawia stan na Unchanged (niezmieniony).Warto PK musi by unikalna, w przeciwnym wypadku EF wywo a wyj tek.

AttachTo() dzia a identycznie jak Attach(), jednak zamiast wywo ywaj dla obiektu kontekstu, to nazw kontekstu podaje si jako parametr.

Za pomoc metody Detach() mo na od czy obiekt od kontekstu, jednak niesie to zasob pewne konsekwencje. Je li obiekt posiada relacje do innych obiektów, to powi zaneobiekty nie zostan usuni te z kontekstu. Stan obiektu nie jest ledzony, od czenie niewp ywa na dane w bazie danych, a je li istnieje, nie zostaje wywo ane kaskadowe usu-wanie w trakcie wykonywania operacji Detach():

context.Detach(zamowienie.Szczegoly.First());

Relacje poprzez klucz FKa relacje niezale ne (obiektowe)

Relacje „jeden do jednego” zawsze s relacjami poprzez klucz (FK), natomiast relacje„wiele do wielu” zawsze s relacjami niezale nymi (ang. Independent). Dla relacji „jedendo wielu” mo na zastosowa relacj FK lub niezale n .

Relacje poprzez klucz obcy — FK AssociationRelacja FK (ang. FK Association) polega na dodaniu klucza obcego do klasy odwzo-rowuj cej tabele. Relacje pomi dzy klasami polegaj na kluczu obcym, tak samo jakw bazie danych (listing 4.7). Takie rozwi zanie nie jest rozwi zaniem obiektowym, leczrelacyjnym. Natomiast klasy s cz ci programowania obiektowego. Takie rozwi zaniema swoje plusy i minusy.

Plusy relacji FK:

znaj c warto klucza, mo na doda dane do s siedniej tabeli, nie trzeba posiadawczytanego ca ego obiektu z bazy danych;

podej cie bardziej intuicyjne, identyczne jak w bazie danych i kodzie SQL.

Kup książkę Poleć książkę

Page 25: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Rozdzia 4. Entity Framework 6 167

Minusy relacji FK:

podej cie relacyjne, a nie obiektowe, w rodowisku obiektowym;

posiadanie dwóch relacji (zarówno FK, jak i relacji niezale nej) mo epowodowa problem z synchronizacj pomi dzy tymi dwoma rodzajami relacji.

Listing 4.7. Przyk ad relacji FK w EF

public class Ogloszenie{ public Ogloszenie() { } public int Id { get; set; } public int UzytkownikId { get; set; } public Uzytkownik Uzytkownik { get; set; }}

public class Uzytkownik{ public Uzytkownik() { this.Ogloszenie = new HashSet<Ogloszenie>(); } public int Id { get; set; } public string Imie { get; set; } public string Nazwisko { get; set; }

public virtual ICollection<Ogloszenie> Ogloszenie { get; private set; }}

Relacje niezale ne — Independent AssociationRelacja niezale na (ang. Independent Association) polega na tym, e nie dodaje si doklasy kluczy obcych, tylko obiekt klasy, z któr wyst puje relacja (listing 4.8). Kon-sekwencj takiego podej cia jest konieczno posiadania ca ego obiektu w pami ci —bez tego EF nie móg by zamodelowa relacji, poniewa nie opiera si ona na FK.

Plusy relacji niezale nej:

istnieje dost p do wszystkich danych z s siedniej tabeli, a nie tylko do klucza,poniewa w pami ci znajduje si ca y obiekt;

obiektowe podej cie.

Minusy relacji niezale nej:

skomplikowane t umaczenie relacji pomi dzy obiektami na relacje w bazie danych;

mniej intuicyjne ni relacje FK;

je li tworzy si relacje, potrzebne s obiekty dla obu ko ców relacji(w FK wystarczy o poda warto klucza obcego);

Kup książkę Poleć książkę

Page 26: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

168 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

nie ma stanu modified — za ka dym razem relacja jest usuwana i dodawanajest nowa;

mniej naturalne z punktu widzenia baz danych i j zyka SQL, trudniejszedo wychwycenia b dy.

Listing 4.8. Przyk ad relacji niezale nej w EF

public class Ogloszenie{ public Ogloszenie() { } public int Id { get; set; }

public Uzytkownik Uzytkownik { get; set; }}

public class Uzytkownik{ public Uzytkownik() { this.Ogloszenie = new HashSet<Ogloszenie>(); } public int Id { get; set; } public string Imie { get; set; } public string Nazwisko { get; set; } public virtual ICollection<Ogloszenie> Ogloszenie { get; private set; }}

Odpytywanie bazy danychza pomoc EF i LINQ

Wczytywanie zach anne — Eager LoadingWczytywanie zach anne (ang. Eager Loading) to proces, w którym zapytanie o jedentyp tabeli pobiera równie dane z tabeli, które s z ni powi zane (posiadaj relacje).U ytkownik posiada wiele og osze . Je li pobiera si u ytkownika, to pobierane s rów-nie jego og oszenia. Aby u y Eager Loading, gdy w czone jest Lazy Loading, nale ywywo a metod Include() w zapytaniu LINQ (listing 4.9).

Listing 4.9. Przyk ad zapytania Eager Loading

using (var context = new AppContext()){ var uzytkownicy = context.Uzytkownik .Include(b => b.Ogloszenia) .ToList();}

Kup książkę Poleć książkę

Page 27: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Rozdzia 4. Entity Framework 6 169

Wczytywanie leniwe — Lazy LoadingWczytywanie leniwe (ang. Lazy Loading) pozwala na opó niony odczyt danych. Nie makonieczno ci pobierania danych og osze , je li chce si pobra tylko dane u ytkownika,pomimo e w klasie Uzytkownik znajduje si kolekcja og osze . Gdy u ywa si LazyLoading, podczas pobierania danych do klasy u ytkownika nie s adowane jego og o-szenia (listingi 4.10 i 4.11). Lazy Loading wymaga oznaczenia w a ciwo ci relacji jakowirtualnej (virtual). Aby by o mo liwe leniwe adowanie, tworzone s dynamicznepuste obiekty proxy, które nadpisuj pola wirtualne w a ciwo ci. Je li u ytkownik pró-buje si odwo a do obiektu proxy po raz pierwszy (chce wy wietli równie infor-macje o og oszeniach u ytkownika), to tworzona jest instancja prawdziwego obiektu(kolekcji og osze ) w miejsce pustego obiektu proxy.

Listing 4.10. Przyk ad klasy Lazy Loading

public class Uzytkownik{ public Uzytkownik() { this.Ogloszenia = new HashSet<Ogloszenie>(); }

public string Imie { get; set; } public string Nazwisko { get; set; }

public virtual ICollection<Ogloszenie> Ogloszenia { get; private set; }}

Listing 4.11. Przyk ad zapytania Lazy Loading

using (var context = new AppContext()){ var uzytkownicy = context.Uzytkownik.Take(10);}

Podczas korzystania z Web API wymagana jest serializacja danych (zapis w formacieJSON lub XML). Aby serializacja by a mo liwa, konieczne jest wy czenie Lazy Loading,poniewa powoduje to adowanie du ej ilo ci niepotrzebnych danych, a nawet zap -tlenie. Lazy Loading mo na wy czy poprzez usuni cie modyfikatora virtual przedw a ciwo ci relacji lub globalnie w klasie z kontekstem, co zosta o zaprezentowanew poni szym kodzie:

public AppContext(){ this.Configuration.LazyLoadingEnabled = false;}

Zalety Lazy Loading:

szybsze adowanie aplikacji,

mniejsze zu ycie pami ci poprzez wczytywanie danych na yczenie,

Kup książkę Poleć książkę

Page 28: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

170 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

zmniejszenie liczby zapyta do bazy danych.

Wady Lazy Loading:

konieczno sprawdzania, czy Lazy Loading jest w czone, co skutkujenieznacznie mniejsz wydajno ci , gdy dane i tak musz zosta wczytane.

Jawne adowanie — Explicit LoadingJe li chcemy, aby przy wy czonym trybie Lazy Loading zapytanie zachowywa o sitak jak w trybie Lazy Loading, trzeba skorzysta z zapytania Explicit Loading. Abywykona Explicit Loading, nale y wywo a metod Load() na powi zanej relacj tabeli(listing 4.12).

Listing 4.12. Przyk ad Explicit Loading

using (var context = new AppContext()){ var uzytkownik = context.Uzytkownik.Find(2); context.Entry(uzytkownik).Collection(p => p.Ogloszenia).Load();}

Problem N+1Problem N+1 wyst puje, gdy nie korzysta si z Lazy Loading i chce si pobra w jed-nym zapytaniu do bazy list obiektów, które posiadaj relacje z innymi obiektami (lis-ting 4.13). Nast pnie dla ka dego pobranego obiektu jest wykonywane osobne zapytaniepobieraj ce dodatkowe dane z tabel, które s powi zane (posiadaj relacje). Problemwyst puje w zapytaniach bez wykorzystania operacji join. Przyk adowo ka dy klient(wiersz w tabeli klient) ma przypisany jeden adres (wiersz z tabeli adres). Przy pobiera-niu listy klientów, gdy ka da klasa klienta ma pole adres, wywo ane zostaje zapytaniezwracaj ce list klientów (bez adresów), a potem automatycznie wywo ywane s dodat-kowo osobne zapytania o adres. Ka de zapytanie jest wywo ywane osobno, a wi c b dzietyle zapyta do bazy danych, ile zostanie zwróconych klientów. W Lazy Loading Pro-blem N+1 wyst pi dopiero wtedy, gdy zajdzie potrzeba pobrania adresów. Je li tabelaposiada index, dane zostan bardzo szybko zwrócone — i takie podej cie jest prawi-d owe (szybsze ni operacja join), jednak gdy danych jest du o i trzeba wykona bardzodu o pojedynczych zapyta do bazy, operacja join powinna by szybsza (listing 4.14).Najlepszym wyj ciem jest napisanie dwóch zapyta i sprawdzenie, które jest szybszew danym przypadku i w jakim stopniu obci a baz danych.

Listing 4.13. Przyk ad kodu prezentuj cego Problem N+1

using (var context = new AppContext()){ foreach (var uzytkownik in context.Uzytkownik) { foreach (var ogloszenie in uzytkownik.Ogloszenia) { Console.WriteLine("{0}: {1}", uzytkownik.Imie, ogloszenie.Tytul);

Kup książkę Poleć książkę

Page 29: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Rozdzia 4. Entity Framework 6 171

} }}

Listing 4.14. Przyk ad kodu korzystaj cego z operacji join (metoda Include) bez Problem N+1

using (var context = new AppContext()){ foreach (var uzytkownik in context.Uzytkownik.Include("Ogloszenia")) { foreach (var ogloszenie in uzytkownik.Ogloszenia) { Console.WriteLine("{0}: {1}", uzytkownik.Imie, ogloszenie.Tytul); } }}

Metoda AsNoTracking()Metoda rozszerzaj ca AsNoTracking() zwraca z zapytania dane, które nie b d ledzoneprzez EF ani nie b d przechowywane w pami ci obiektu DbContext. ZastosowanieAsNoTracking() skutkuje oko o dwukrotnie wi ksz wydajno ci przy odczycie. Je lidane mog lub maj zosta zmodyfikowane, nie powinno si korzysta z tej metody.EF b dzie wówczas ledzi zmiany w obiekcie, co umo liwi edycj lub zapis danych dobazy (listing 4.15).

Listing 4.15. Przyk adowy kod wykorzystuj cy metod AsNoTracking()

using (var context = new WebAppContext()){ var dane = context.Tabela .Where(d => d.Nazwa.Contains(".NET")) .AsNoTracking() .ToList();}

Odroczone i natychmiastowe wykonanieNatychmiastowe (ang. Immediate) wykonanie zapytania pobiera ca o danych od razupodczas wykonywania zapytania. Odroczone (ang. Deferred) wykonanie zapytaniakorzysta z iteratorów (tabela 4.1) i yield return, a wi c musi zwraca typ danych, którydziedziczy po IEnumerable, i zwraca dane pojedynczo w momencie, kiedy s potrzebne.Domy lnie u ywane jest odroczone wykonanie. Aby wywo a natychmiastowe wyko-nanie, nale y u y jednej z nast puj cych metod: ToList(), ToDictionary() lub ToAr-ray(). Wszystkie zapytania zwracaj ce pojedyncz warto s wykonywane natychmia-stowo, np. Averange, Count, First lub Sum, poniewa nie ma mo liwo ci u yciaopó nionego wykonania, je li jest tylko jeden element w kolekcji.

Kup książkę Poleć książkę

Page 30: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

172 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

Tabela 4.1. Lista operatorów, które posiadaj zaimplementowane iteratory

Metoda Iterator

Cast CastIterator

Concat ConcatIterator

DefaultIfEmpty DefaultIfEmptyIterator

Distinct DistinctIterator

Except ExceptIterator

GroupJoin GroupJoinIterator

Intersect IntersectIterator

Join JoinIterator

OfType OfTypeIterator

Range RangeIterator

Repeat RepeatIterator

Reverse ReverseIterator

Select SelectIterator

SelectMany SelectManyIterator

Skip SkipIterator

SkipWhile SkipWhileIterator

Take TakeIterator

TakeWhile TakeWhileIterator

Union UnionIterator

Where WhereIterator

Zip ZipIterator

Entity SQLEntity SQL to j zyk zapyta bazuj cy na SQL (alternatywa dla LINQ to Entities). Pozwalana pisanie zapyta w j zyku SQL, jednak w tre ci zapytania zamiast nazw tabel podajesi nazwy klas z aplikacji. Entity SQL powinien by u ywany tylko w momencie, gdyzapytanie pisane za pomoc LINQ jest zbyt skomplikowane. Zapytania Entity SQL nie skompilowane, lecz konstruowane s w czasie dzia ania programu. Zapytania LINQ skompilowane i typowane (zwi ksza si bezpiecze stwo i szybko ), dlatego powinnyby u ywane, je li tylko jest to mo liwe. Aby wykona zapytanie Entity SQL, nale yuzyska ObjectContext z obiektu DbContext i skorzysta z generycznej metody Object

Query<T> (listing 4.16)1.

Listing 4.16. Przyk ad zapytania Entity SQL

using(ApplicationDbContext context = new ApplicationDbContext()){ var adapter = (IObjectContextAdapter)context; var objectContext = adapter.ObjectContext;

1 http://msdn.microsoft.com/en-us/library/bb399554.aspx

Kup książkę Poleć książkę

Page 31: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Rozdzia 4. Entity Framework 6 173

string esqlQuery = @"SELECT VALUE Ogloszenie FROM Models.Ogloszenia as Ogloszenie WHERE Ogloszenie.Id > @parametrId";

ObjectQuery<Ogloszenie> query = new ObjectQuery<Ogloszenie>(esqlQuery, objectContext, MergeOption.NoTracking);

query.Parameters.Add(new ObjectParameter("parametrId", 1));

return query;}

Bezpo rednie zapytania SQL do bazy(Direct/RAW SQL) i procedury sk adowane w EF

Zapytania Direct/RAW SQL powinny by stosowane tylko wtedy, gdy nie ma mo liwo ciskorzystania z zapyta LINQ to Entities lub Entity SQL. W zapytaniu SQL podaje sinazwy tabel w bazie danych, a nie nazwy klas, jak to by o w Entity SQL. W Entity SQLoperuje si na typach pochodz cych z aplikacji, co wp ywa na bezpiecze stwo, ponie-wa typy danych s znane i walidowane. Dla zapyta RAW SQL, czyli sk adaj cychsi z czystego kodu SQL, wyst puje niebezpiecze stwo ataku SQL Injection. Abypobra dane za pomoc j zyka SQL, nale y u y metody SqlQuery(), a w celu wys aniazapytania do bazy niezwracaj cego adnych warto ci korzysta si z SqlCommand().

Przyk ad zapytania zwracaj cego typ klasy POCO:using (var context = new AppContext()){ var blogs = context.Ogloszenia.SqlQuery("SELECT * FROM dbo.Ogloszenia").ToList();}

Przyk ad wywo ania procedury sk adowanej z parametrem:using (var context = new AppContext()){ var ogloszenieId = 1; var blogs = context.Ogloszenia.SqlQuery("dbo.GetOgloszenieById @p0", ogloszenieId).Single();}

Przyk ad zapytania zwracaj cego typ, który nie jest klas POCO:using (var context = new AppContext()){ var tytuly = context.Database.SqlQuery<string>("SELECT Tytul FROM dbo.Ogloszenia").ToList();}

Kup książkę Poleć książkę

Page 32: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

174 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

Przyk ad zapytania SQL niezwracaj cego warto ci:using (var context = new AppContext()){ context.Database .SqlCommand("UPDATE dbo.Ogloszenia SET Tytul = 'Jakis tytul' WHERE Id = 1");}

Transakcje w EFTransakcja to traktowanie kilku operacji na bazie danych jak jednej. Je li cho jednozapytanie nie zostanie wykonane, to reszta zapyta tak e nie mo e zosta wykonana.Je li b d wyst pi w ostatniej operacji, to wcze niej wykonane operacje nale y wycofa ,czyli przywróci dane do stanu, w jakim znajdowa y si przed rozpocz ciem wyko-nywania transakcji. Transakcje powinny by wykonywane, je li kolejne operacje zaleod wcze niejszych operacji lub gdy nie chce si , aby rezultat pojedynczej operacji (tylkocz ci z ca ej transakcji) by widoczny dla innych u ytkowników bazy danych. W przy-padku transakcji wszystkie operacje zostan wykonane jak pojedyncza operacja. Trans-akcja mo e dzia a na kilku ród ach danych — dopiero gdy wszystkie operacje zako czsi powodzeniem, transakcja b dzie zaakceptowana i dane zostan zapisane. Aby sko-rzysta z transakcji, nale y utworzy nowy obiekt TransactionScope przy u yciu blokuusing (listing 4.17), nast pnie utworzy obiekty kontekstu i wykona operacje powi zanez transakcj . Na koniec wywo uje si metod Complete(), która oznacza, e wszystkieoperacje si powiod y i ca a transakcja zako czy a si sukcesem. Je li którakolwiekoperacja si nie powiedzie, metoda Complete() nie zostanie wywo ana, co b dzieoznacza , e trzeba przywróci dane do stanu oryginalnego (odwróci ju wykonaneoperacje)2.

Listing 4.17. Przyk ad u ycia TransactionScope

using (var scope = new TransactionScope(TransactionScopeOption.Required)){ using (var conn = new SqlConnection("...")) { conn.Open();

var sqlCommand = new SqlCommand(); sqlCommand.Connection = conn; sqlCommand.CommandText = @"UPDATE Blogs SET Rating = 5" + " WHERE Name LIKE '%Entity Framework%'";

sqlCommand.ExecuteNonQuery();

using (var context = new AppContext(conn, contextOwnsConnection: false)) { var query = context.Ogloszenia.Where(p => p.Id > 7); foreach (var ogl in query) {

2 http://msdn.microsoft.com/en-us/data/dn456843.aspx

Kup książkę Poleć książkę

asedzielewski
Prostokąt
Page 33: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Skorowidz.NET Framework Data Provider, 147

Aabstrakcja, 53adnotacje do walidacji, 222ADO.NET, 146adresaty atrybutów, 94Agile, 437AJAX, 491, 495AJAX Long-Polling, 492AJAX Polling, 492akcja

Create, 353, 379Delete, 345, 350, 379Details, 342, 376Edit, 360, 363, 377Index, 311, 317, 327, 385

aktualizacjabibliotek, 281Google

EDM, 511Panda, 510Pingwin, 510

kontrolera, 381, 387pakietów, 279szablonu, 365widoku, 317, 345, 354, 360, 389

aliasy, 82aliasy zewn trzne, 83animacje, 488API

Drag and Drop, 463Web Storage, 461

architekturaaplikacji, 334dwuwarstwowa, 126jednowarstwowa, 126n-warstwowa, 126trójwarstwowa, 126

argumentymetod, 49nazwane, 110

arkusz stylów CSS, 467ASP.NET Identity, 244ASP.NET MVC, 252ASP.NET MVC 1, 185ASP.NET MVC 2, 185ASP.NET MVC 3, 186ASP.NET MVC 4, 186ASP.NET MVC 5, 185, 186ASP.NET MVC 6, 187ASP.NET Web API 2, 251ASP.NET Web Forms, 145ASP.NET Web Pages, 146atak

Cross-Site Request Forgery, 236Cross-Site Scripting, 237CSRF, 357SQL Injection, 236

atrybutBind, 237OutputCache, 232

atrybuty, 93atrybuty Caller Info, 119dla formularza, 459globalne, 456

Attribute Routing, 216, 407autocomplete, 408automaty do postowania, 512automatyczna inicjalizacja w a ciwo ci, 120autoryzacja, 242, 372

dost pu, 369RSA, 448

Azure Service Bus, 144

Bban, 509baza danych, 305, 419

niespójno , 310strategie dziedziczenia, 178

Kup książkę Poleć książkę

Page 34: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

516 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

baza dokumentowaMongoDB, 498RavenDB, 498

bazy nierelacyjne, 497bezpiecze stwo, 235, 369biblioteka

Bootstrap, 329JQuery, 484jQuery Unobtrusive, 221PagedList, 382

binding, 357BLOB Storage, 143blok try-catch, 238b d, 310, 348

404, 394dla podstrony, 397podczas edycji, 378w dost pie do danych, 395

Browser Link, 270

CC#, 19C# 2.0, 20C# 3.0, 20C# 4.0, 21C# 5.0, 21C# 6.0, 21cache, 231, 394cachowanie

cz ciowe, 233po stronie klienta, 234po stronie serwera, 231rozproszone, 233w HTML 5, 234

CAPTCHA, 513ceny

licencji SQL Server, 265Windows Server 2012, 268

certyfikatCSR, 450SSL, 449, 450

aktywacja, 450instalacja, 450walidacja, 450

ciasteczka, 243CIL, Common Intermediate Language, 19, 135claimy, 245CLI, Common Language Infrastructure, 135CLR, Common Language Runtime, 135, 137Code First, 157, 158Code First Data annotations, 235Code First Fluent API, 181controller, 128

CORS, 255, 256CRUD, 223CSS, 330CSS 3, 466

nowe selektory, 471nowe w asno ci, 472

CSS 4, 473cykl ycia obiektu, 341czas, 90

DDAL, Data Access Layer, 157data, 90Data Annotations, 181, 235Data Contract, 140Data Member, 140Database First, 157DDD, 132debugowanie, 324

aplikacji, 325, 327metody Seed, 308obiektu db, 327

definiowanie w asnego atrybutu, 256deklaracja zmiennej, 27deklaracje, 24deklaracje inline, 122delegaty, 72destruktor, 64diagram ERD, 159, 413DIP, 431DLR, Dynamic Language Runtime, 137d ugi ogon, Long Tail, 505dobre praktyki, 26dodawanie

domeny, 415dyrektywy using, 285encji, 411kolumny, 413kontrolera, 224, 312kontrolerów, 311modelu, 410nowego projektu, 295nowej klasy, 283referencji, 296w z ów, 478widoków, 311

dokument SOAP, 253DOM, 463, 469

dost pne metody, 477dost pne w a ciwo ci, 479poziomy, 480schemat, 478

domena, 415

Kup książkę Poleć książkę

Page 35: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Skorowidz 517

domena aplikacji, 189domy lny

layout, 313widok, 402

Drag and Drop, 463DRY, Don’t Repeat Yourself, 435drzewa wyra e , 101drzewo, 469DV, Domain Validation, 449dyrektywa using, 81, 121, 285dyrektywy preprocesora, 76dziedziczenie, 54

TPC, 179TPH, 178TPT, 178

EEDA, 133edycja og oszenia, 378edytowane pliki, 425EF 5, 159EF 6, 160elementy HTML 5, 456encje, 411Entity Framework, 153Entity Framework 6, 154, 157Entity SQL, 172EV, Extended Validation, 449eXtreme Programming, 439

FFederated Authentication, 247filtry, 485, 509

akcji, 197wyj tków, 124

folderModels, 294Shared, 201z widokami, 316

formatJSON, 406, 493XML, 406

formularz, 456framework Twitter Bootstrap, 473

GGarbage Collector

podzia na generacje, 66zasada dzia ania, 66

generowaniekontrolerów, 223, 225widoków, 226, 227

geolokalizacja, 465Google Analytics, 511Google Webmasters Tools, 511GRASP, 432

HHandleErroe, 239Harvestery, 513has o, 372hermetyzacja, 54hierarchia drzewa, 469hostowanie aplikacji, 143HTML 5, 453

atrybuty globalne, 456nowe elementy, 456sekcje, 457SSE, 461szablon, 454typy pól formularza, 458WebSockets, 462znaczniki, 454, 459

HTML 5 Application Cache, 234HTML 5 WebStorage, 234HTML DOM, 477HTML helper, 208, 401HTTP, 443

IIdentity Provider, 246identyfikacja, 241IEnumerable, 96IHttpActionResult, 260IIS, Internet Information Services, 263

modu y, 263przetwarzanie da , 264pule aplikacji, 264

implementacja.NET, 138interfejsu, 69, 395klasy repozytorium, 395kontrolera, 396metody POST, 362

indeksatory, 61index, 373inicjalizacja

pól, 64zmiennej, 28

Kup książkę Poleć książkę

Page 36: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

518 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

inicjalizatoryobiektów i kolekcji, 100s ownikowe, 121

instalacjabibliotek, 298biblioteki PagedList, 382certyfikatu SSL, 450jQuery, 485kontenera IoC Unity, 338migracji, 300pakietów, 298

instrukcjachecked, 78if, 40, 41switch, 41unchecked, 78

instrukcjeiteracyjne, 43skoku, 45steruj ce, 40

interfejs, 68, 86ICollection<>, 87IDictionary<TKey, TValue>, 86IEnumerable<T>, 87IHttpActionResult, 260IList<>, 87IOgloszenieRepo, 338IQueryable<>, 88

IoC, 397ISAPI, 189ISP, 429iteratory, 97

JJavaScript, 271, 352, 480

JQuery, 484mo liwo ci, 483sk adnia, 481

jawna implementacja interfejsu, 69jawne adowanie, 170j zyk C#, 19JQuery, 352, 484, 495

animacje, 488filtry, 485metody, 488selektory, 485zdarzenia, 487

JQuery Mobile, 491JQuery UI, 490JSON, 406, 493

tablica, 493typy warto ci, 493

JSON Editor, 271JSONP, 255

Kkary, 509kaskadowe usuwanie, 348katalogi stron, 502kategorie, 395KISS, 436klasa, 46

ApplicationUser, 288FilterConfig, 239Kategoria, 286Ogloszenie_Kategoria, 287OgloszenieRepo, 335System.Array, 35System.Object, 63Uzytkownik, 287z kontekstem, 293

klasycz ciowe, 103generyczne, 84

kluczFK, 166obcy, 166szyfruj cy, 447

kolekcje, 37generyczne, 86IEnumerable, 123

komentarze, 23komunikat o b dzie, 222, 351, 380konfiguracja

migracji, 301witryny, 417

konstruktor, 64konstruktory pierwotne, 120kontekst, 410kontener

IoC, 336, 341IoC Unity, 338

konto FTP, 421kontrawariancja, 111, 112kontroler, 194, 223

Web API, 257z widokami, 311

konwencja ponad konfiguracj , 188konwencje, 21

nazewnicze, 25w MVC, 187

konwersjajawna, 58niejawna, 57

konwersje typów, 31

Kup książkę Poleć książkę

Page 37: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Skorowidz 519

Llayout, 367leniwa inicjalizacja, 114licencjonowanie

SQL Server, 265Windows Server, 267

linki, 502linkowanie, 501linkowanie wewn trzne, 505LINQ, 148, 168, 397, 400LINQ to DataSet, 149LINQ to Entities, 149LINQ to Objects, 149LINQ to SQL, 149LINQ to XML, 148lista og osze , 321, 395, 405litera y, 30litera y binarne, 124logowanie, 193, 369, 370, 373logowanie globalne, 240LSP, 428

a cuchy, 36czenie stylów CSS, 210

Mmanifest Agile, 437mapowanie da na akcje, 257mechanizm

refleksji, 93Scaffoldingu, 224

metatagi, 499metoda, 49

Aktualizuj, 365AsNoTracking, 171, 324, 327Attach, 165Create, 358Delete, 348Detach, 165Details, 342Dispose, 313Down, 304Edit, 359Equals, 57GET, 446GetHashCode, 57Index, 388OnException, 238POST, 362, 446POST dla akcji Create, 355

POST dla akcji Delete, 347RegisterBundles, 209SaveChanges, 349Seed, 183, 305ToList, 325, 328Up, 302

metodyanonimowe, 74asynchroniczne, 118, 228, 230cz ciowe, 104generyczne, 84rozszerzaj ce, 102synchroniczne, 228, 230zwrotne, 118

metodyka Scrum, 439Microsoft Azure, 143Microsoft SQL Server 2014, 264Microsoft Visual Studio, 423Microsoft Visual Studio 2013 Ultimate, 268migracja startowa, 302migracje, 183, 300, 309minimalizacja, 209model, 128, 130, 218

aktywny, 129danych, 157First, 157, 158pasywny, 129

modele licencjonowania SQL Server, 265modu y

Elmah, 241IIS, 263

modyfikator private protected, 123MongoDB, 498MoSCoW, 437MVC, Model View Controller, 127, 131, 185

autoryzacja, 242filtry, 198identyfikacja, 241konwencje, 188logowanie b dów, 241metody asynchroniczne, 228metody synchroniczne, 228role, 242struktura projektu, 187uwierzytelnianie, 241wyj tki, 238

MVC Pipeline, 189modu y HTTP, 193cie ka wywo a , 189

uchwyty, 193MVC Scaffolding, 222MVP, Model View Presenter, 129, 131MVVM, Model View ViewModel, 131

Kup książkę Poleć książkę

Page 38: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

520 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

Nnarz dzia

do pracy z tekstem, 511ORM, 153

narz dzie NLOG, 240nawiasy klamrowe, 25nazwa domeny, 417nazwy

kwalifikowane, 80niekwalifikowane, 80

NHibernate, 153NHibernate 3, 154nowy projekt, 279

Oobiekt, 48

DataRelation, 147DataRow, 147DataSet, 147DataTable, 147DataView, 147DbContext, 165DbSet, 165HttpApplication, 190

obs ugab dów, 350, 363

da , 191obszary, 217OCP, 428OData, 254odkomentowanie kodu, 370odnajdywanie widoków, 200odpytywanie

bazy danych, 168cykliczne AJAX, 491

odroczone wykonanie, 325og oszenia u ytkownika, 393okno

dodawania domeny, 416dodawania widoku, 207, 400NLOG, 240Output, 326potwierdzania wyboru, 352Properties, 414tworzenia bazy danych, 420tworzenia u ytkownika, 421Watch, 326wyboru

szablonu widoku, 228trybu dzia ania witryny, 419

typu domeny, 417typu widoku, 228

z b dami, 241zarz dzania

baz danych, 420kontami FTP, 421witryn , 418

opakowywanie, 32opcja

Reference script libraries, 227Strongly Typed, 207

OpenAuth, 250OpenId, 249operacja join, 400operacje

CRUD, 223wspó bie ne, 176

Operation Contract, 140operator, 38

??, 40trójargumentowy, 38

opis strony, 500optymalizacja

listy og osze , 322pod k tem pozycjonowania, 331pod k tem SEO, 329SEO, 343

OV, Organization Verification, 449OWIN, 244

PPage Inspector, 269pakiet PagedList.Mvc, 382pakiety, 282, 299panel u ytkownika, 415parametr binding, 237parametry

akcji, 196opcjonalne, 111

p tlado while, 43for, 44foreach, 45while, 43

piaskownica, 509plik

.htaccess, 508_Layout.cshtml, 211BundlesConfig.cs, 209robots.txt, 506sitemap.xml, 507

PLINQ, Parallel LINQ, 151

Kup książkę Poleć książkę

Page 39: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Skorowidz 521

pobieraniedanych, 220, 321, 326

po stronie klienta, 261po stronie serwera, 261

tokena, 246podej cie Model First, 409podpowiedzi sk adni, 319pod wietlanie wierszy, 330podzia wymaga klienta, 437pola, 48polimorfizm, 55po czenie

z baz danych, 422z serwerem, 494

poprawaarchitektury aplikacji, 334wygl du, 329

post p publikacji, 424potwierdzanie to samo ci, 447powi zania pomi dzy tabelami, 412, 413pozycjonowanie, 331, 499

.htaccess, 508Friendly URL, 506linkowanie, 501linkowanie wewn trzne, 505metatagi, 499narz dzia, 511nofollow, 500noindex, 500robots.txt, 506schematy linkowania, 503sitemap.xml, 507s owa kluczowe, 500znaczniki HTML, 500

prefiksy, 215presenter, 130problem N+1, 170procedury sk adowane w EF, 173programowanie

ekstremalne, 439metodologie, 437obiektowe, 53zasady, 427

projektMono, 139Repozytorium, 296

protokóSOAP, 253SSL, 447

przechodzenie po elementach HTML, 489przeci anie

metod, 61operatorów, 56

arytmetycznych, 60konwersji, 57

logicznych, 58relacji, 57

przeniesieniemetody, 334pliku, 299zapytania LINQ, 334

przestrzenie nazw, 79przestrze System.IO, 92przeszukiwanie sieci, 513przetwarzanie da , 264przyciski Bootstrap, 329przyjazne adresy URL, 506pseudoklasy

adresu, 475czasu, 475formularza, 475logiczne, 473struktury drzewa, 475struktury siatki, 475

pseudouwierzytelnianie, 250publikacja, 424publikacja systemu, 414pule aplikacji, 264punkt przerwania, 326puste linie, 24

QQueue Storage, 143

RRavenDB, 498razor, 202refleksja, 93, 95regiony, 290regu a CSS, 468rejestracja

u ytkownika, 369z u yciem Google, 371

relacjaFK, 166jeden do jednego, 161jeden do wielu, 161wiele do wielu, 162, 408

relacjeniezale ne, 166, 167opcjonalne, 165poprzez klucz obcy, 166

relacyjne bazy danych, 160repozytorium, 277, 335, 340, 410repozytorium generyczne, 278REST, 253

Kup książkę Poleć książkę

Page 40: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

522 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

rodzajearkuszy stylów:, 468certyfikatów, 449

role, 242, 372routing, 214, 316

ignorowanie cie ek, 214kolejno , 214na podstawie atrybutów, 215, 252obszary, 217ograniczenia, 215w Web API, 257

rozpakowywanie, 32RP, Relying Party, 246rzutowanie, 31

Ssandbox, 509Scaffolding, 224schemat

dla Federated Authentication, 248DOM, 478formularza, 455gwiazdy, 504ko a, 503kontrolera, 225piramidy, 504wywo a , 192

schematylinkowania, 503mieszane, 505

Scrum, 439sekcja featured, 213sekcje, 211, 457selektory, 471, 485SEO, 329, 331, 343, 499separacja zagadnie , 436separatory cyfr, 124serializacja, 495Server Side Events, 461Service Bus Queue, 145Service Bus Relay, 144Service Bus Topic, 145Service Contract, 140serwer

hostingowy, 414IIS, 263

serwis z og oszeniami, 278sesje, 243silnik Razor, 203Silverlight, 142sk adnia

metod, 150zapyta , 151

skróty klawiszowe, 272skrypty, 209

blogowe, 503katalogów, 502

s owo kluczowe, 29as, 114async, 118, 230await, 118, 124, 230base, 106in, 111is, 114out, 111task, 230this, 106typeof, 114using, 71yield return, 97

snippety, 269SOA, 132SOAP, 253SoC, Separation of Concern, 436SOLID, 427sortowanie, 387

cyfr, 464og osze , 392

sprawdzaniedanych, 308warto ci null, 123

SQL Logging, 179SQL Server 2014, 266SQL Server Management Studio, 422SRP, 427SSL/TLS, 447stan aplikacji, 242strona

edycji, 377ufaj ca, 246

stronicowanie, 381struktura, 67

.NET, 135bazy danych, 305dokumentu, 470katalogów, 463projektów, 280projektu Repozytorium, 299

STS, 246systemy wymiany linków, 512szablon, 225

_Layout.cshtml, 365dokumentu HTML 5, 454

Kup książkę Poleć książkę

Page 41: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Skorowidz 523

ledzenie zmian, 175dynamiczne, 176migawkowe, 175

Ttabela

ogranicze , 217znaków szczególnych, 30

Table Storage, 143tablica, 34tablica typów, 28TDD, Test Driven Development, 440TempData, 204testy, 440TLS, Transport Layer Security, 448token, 246TPC, Table Per concrete Class, 179TPH, Table Per Hierarchy, 178TPT, Table Per Type, 178transakcje w EF, 174tryb Inspect Mode, 271Twitter Bootstrap, 329, 473tworzenie

bazy danych, 419, 420interfejsu dla repozytorium, 337klasy kontekstu, 290konta FTP, 421migracji pocz tkowej, 302modelu danych, 283nowego projektu, 279nowego projektu Repozytorium, 296obiektu XMLHttpRequest, 493paczek skryptów, 209profilu, 232referencji, 297

typ, 26ActionResult, 260HttpResponseMessage, 259void, 259wyliczeniowy, 31z aplikacji, 260

typyanonimowe, 105danych MIME, 444dopuszczaj ce warto ci zerowe, 33dynamiczne, 107pól formularza, 458rezultatu, 194walidacji, 449wyj tków, 240

tytu strony, 333

Uuchwyty HTTP, 193UoW, 410uruchamianie

aplikacji, 316CORS, 256pierwszej migracji, 304Web Deploy, 419

uruchomiona aplikacja, 295ustawienie

atrybutu, 463projektu startowego, 297

usuwaniekaskadowe, 177w z ów, 478

uwierzytelnianie, 241, 369, 370przez Windows ACS, 249za pomoc claimów, 245

Vview, 128, 130ViewBag, 204ViewData, 204ViewModel, 218, 402Virtual Machine, 144Visual Studio 2013, 269

Browser Link, 270GIT, 272JavaScript, 271JSON Editor, 271Microsoft Azure, 272pasek przewijania, 270podgl d definicji, 270skróty klawiszowe, 272tryb Inspect Mode, 271

Wwalidacja, 221, 449

strony, 466dania POST, 357

walidator W3C, 468warstwa modelu, 258, 294, 311warto ci

zerowe, 33zmiennych, 325

WCF, Windows Communication Foundation, 140WCF Endpoint, 142wci cia, 22wczytywanie

leniwe, 169zach anne, 168

Kup książkę Poleć książkę

Page 42: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

524 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

wdra anie aplikacji, 423Web API, 251

ASP.NET MVC, 252CORS, 256Entity Framework, 258pobieranie danych, 261routing, 257typy, 258wersjonowanie, 262

Web API 2, 251Web Deploy, 420Web Role, 144Web serwis, 251, 253Web Site, 144Web Storage, 461WebSockets, 462wersje

j zyka C#, 20Windows Server 2012, 267

wersjonowanie w Web API, 262weryfikacja po o enia, 467widok, 200, 390, 400, 404

Details, 344dla konta Admin, 375dla konta Pracownik, 375dla niezalogowanych u ytkowników, 376dla zalogowanych u ytkowników, 375Index, 398Partial, 368, 402Partial View, 229, 386z layoutem, 229

widokicz ciowe, 201, 366typowane, 205

WIF, 245Windows ACS, 248Windows Azure Storage, 143Windows Server 2012, 267w a ciwo ci, 52w a ciwo ci XMLHttpRequest, 494w czenie NuGet, 281Worker Role, 144WPF, Windows Presentation Foundation, 139wstrzykiwanie

implementacji, 397kontekstu, 340repozytorium, 336

wybieranieklasy z modelem, 313miejsca publikacji, 423szablonu, 296tre ci modelu, 411typu aplikacji, 280

wygl daplikacji, 330–332aplikacji z paginacj , 385strony, 399

wyj tki, 77, 238wykonanie

natychmiastowe, 171odroczone, 171

wyra eniadla metod, 122dla w a ciwo ci, 122lambda, 74regularne, 89

wy wietlanie og osze , 397wywo ywanie metod, 51wzorce

architektoniczne, 125, 277projektowe, 277

wzorzecIoC, 277MVC, 185UnitOfWork, 278

XXMLHttpRequest, 493

Zzabezpieczanie akcji, 373zagnie d anie przestrzeni nazw, 79zainstalowane pakiety, 299zakup certyfikatu SSL, 450zapytania

bezpo rednie, 173LINQ, 150

zarz dzaniekontami FTP, 421wyj tkami

globalne, 239lokalne, 238

zasadaController, 433Creator, 433DRY, 435High Cohesion, 434Indirection, 435Information Expert, 433KISS, 436Low Coupling, 433odwrócenia zale no ci, 431otwarte-zamkni te, 428podstawienia Liskov, 428

Kup książkę Poleć książkę

Page 43: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

Skorowidz 525

pojedynczej odpowiedzialno ci, 427Polymorphism, 434Protected Variations, 435Pure Fabrication, 434separacji interfejsów, 429YAGNI, 437

zasoby niezarz dzane, 70zastosowanie

atrybutu Serializable, 94ViewModel, 402

zbiór zasadGRASP, 432SOLID, 427

zdarzenia, 75, 464, 487zdobywanie

linków, 502sztucznych linków, 509

zg aszanie wyj tków, 77zmienne

domniemane, 105tylko do odczytu, 29

znaczniki HTML, 454, 459, 500zwalnianie zasobów niezarz dzanych, 70

daniaAJAX, 491HTTP, 445daniedo aplikacji ASP.NET, 189GET, 196, 445POST, 196, 446

Kup książkę Poleć książkę

Page 44: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...

526 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych

Kup książkę Poleć książkę

Page 46: C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych · 2019-05-15 · 10 C# 6.0 i MVC 5. Tworzenie nowoczesnych portali internetowych Rozdzia ...