Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

2. diel - Inštalácia a prvý model v Entity Framework Core a C# .NET

V minulej lekcii, Úvod do Entity Framework Core v C# .NET , sme si uviedli a porovnali rôzne spôsoby práce s relačnými databázami v C# .NET.

V dnešnom Entity Framework Core tutoriále, v jazyku C# .NET, si pripravíme Visual Studio a založíme náš prvý projekt s Entity Framework Core, ktorý si nainštalujeme. Nakoniec ešte začneme pracovať na tvorbe jednoduchého modelu.

V našom prvom projekte budeme používať odľahčenú verziu Microsoft SQL Server databázy označovanú LocalDB. Táto databáza sa najčastejšie používa buď pri vývoji aplikácie, a vo finálnej verzii je nahradená, alebo niekedy aj ako lokálne úložisko dát.

V druhom prípade sa však skôr volí databáza SQLite.

Príprava LocalDB

LocalDB je možné si nainštalovať cez Visual Studio Installer, a to buď v rámci sady funkcií Ukladanie a spracovanie dát (Data storage and processing), alebo Vývoj pre ASP.NET a web (ASP.NET and web development).

Ak niektorú z týchto sád máme nainštalovanú, si overíme vo Visual Studio Installer kliknutím na Zmeniť u nami používanej verzie Visual Studia. Uistíme sa, že máme zaškrtnutú aspoň jednu z týchto sád, prípadne niektorú zaškrtneme a zmeny potvrdíme:

Sada funkcií Ukladanie a spracovanie dát - Entity Framework Core v C# .NET

Alternatívne môžeme LocalDB nainštalovať len ako samostatný komponent SQL Server Express 2019 LocalDB v zodpovedajúcej záložke Jednotlivé komponenty:

Komponent LocalDB - Entity Framework Core v C# .NET

Kurz je písaný s použitím Visual Studio 2022.

Database First a Code First prístup

V lekcii Úvod do Entity Framework Core v C# .NET sme si už povedali, že na to, aby sme v Entity Framework Core mohli komunikovať s SQL databázou, potrebujeme tzv. model. Modelom chápeme popis štruktúry databázy vo forme C# tried. Tento popis sa skladá najmä z jednotlivých entít a databázového kontextu.

V Entity Framework Core môžeme zvoliť jeden z dvoch prístupov, ako takýto model vytvoriť. Konkrétne sa jedná o prístupy Database First a Code First.

Database First

Prístup Database First predpokladá, že sa chceme pripojiť k už existujúcej SQL databáze. Všetky triedy nášho modelu tak musíme prispôsobiť tabuľkám danej databázy, aby presne kopírovali ich štruktúru. Aj keď Entity Framework Core našťastie ponúka nástroje, ktoré dokážu z SQL databázy automaticky vygenerovať model úplne za nás, tak tento prístup v dnešnej dobe už nie je úplne populárny. Pre tvorbu aj tej najjednoduchšej databázy od nás totiž vyžaduje písanie SQL príkazov.

Code First

Oveľa populárnejší je opačný prístup, prístup Code First, kedy najskôr napíšeme náš model a následne si z neho necháme automaticky vygenerovať celú databázu. Pri tvorbe aplikácie tak nemusíme prechádzať medzi dvoma rôznymi jazykmi, všetko píšeme iba v jazyku C#, a vyhneme sa tak množstvu chýb z nepozornosti. Entity Framework Core dokonca ponúka prostriedky na jednoduchú a bezpečnú aktualizáciu databázy po zmene definície modelu.

My pre náš projekt zvolíme práve prístup Code First. Prvé si teda napíšeme triedy pre entity a databázový kontext a databázu si z nich potom necháme vygenerovať.

Založenie projektu

Teraz sa už môžeme vrhnúť na tvorbu nášho prvého projektu. Celý kurz sa bude venovať predovšetkým tvorbe databázy a komunikácii s ňou, nebudeme sa tak zaoberať tvorbou nejakého sofistikovaného užívateľského rozhrania. Entity Framework Core našťastie nie je viazaný na jeden konkrétny typ projektu, preto budú všetky naše projekty v tomto kurze jednoduché konzolové aplikácie.

V prípade, že by vás zaujímalo, ako Entity Framework Core zapracovať do ASP.NET Core projektu, tak môžete po absolvovaní tohto kurzu navštíviť zodpovedajúcu sekciu ASP.NET Core - Webové aplikácie v C#, kde ho používame takmer v každom kurze.

Otvoríme si teda Visual Studio a vytvoríme novú C# .NET konzolovú aplikáciu, ktorú si pomenujeme napríklad FirstEFCoreProject:

Výber názvu a umiestnenie projektu - Entity Framework Core v C# .NET

Verziu frameworku zvolíme ideálne tú najnovšiu, v našom prípade .NET 7:

Výber verzie frameworku - Entity Framework Core v C# .NET

Inštalácia Entity Framework Core

Entity Framework Core sa do C# .NET projektov inštaluje prostredníctvom NuGet balíčkov. Týchto balíčkov máme k dispozícii viac podľa poskytovateľov databáz. My využijeme balík Microsoft.EntityFrameworkCore.SqlServer určený pre Microsoft SQL Server databázy.

V okne Solution Explorer teda klikneme pravým tlačidlom na Solution a zvolíme Manage NuGet Packages for Solution.... V záložke Browse si vyhľadáme a vyberieme balíček Microsoft.EntityFrameworkCore.SqlServer. Potom v menu napravo zaškrtneme náš jediný projekt a vyberieme najnovšiu dostupnú verziu balíčka pre .NET, v ktorom aplikáciu vyvíjame.

Ak vyvíjame napríklad v .NET 7, tak balíčky nainštalujeme vo verzii 7.xy, kde x a y sú najväčšie možné čísla.

Inštaláciu potvrdíme tlačidlom Install:

Inštalácia balíčka cez NuGet Package Manger - Entity Framework Core v C# .NET

Tým máme náš projekt pripravený a môžeme sa dať na písanie kódu.

Entita Author

V našom prvom projekte budeme mať iba jednu entitu, a to entitu Author predstavujúcu autora článkov v redakčnom systéme. Entita bude mať vlastnosti:

  • Id - unikátny identifikátor autora,
  • Name - meno,
  • LastName - priezvisko,
  • BirthDate - dátum narodenia,
  • ArticlesCount - počet napísaných článkov.
Pridajme si do projektu novú triedu Author s vyššie uvedenými vlastnosťami:

Od Visual Studio 2022 sú všetky projekty automaticky generované s povolenou funkciou nullovateľných referenčných typov (funkcia pridaná v C# 8.0). Táto funkcia nám umožňuje nastaviť hodnotu null iba atribútom alebo vlastnostiam, ktoré majú definíciu typu označenú operátorom ?, a to aj v prípade, že sa jedná o referenčný dátový typ. Každý atribút alebo vlastnosť referenčného dátového typu tak musí mať pri vytváraní objektu nastavenú nejakú východiskovú hodnotu inú ako null, pokiaľ nie je označený ako nullovateľný operátorom ?. Preto našim vlastnostiam nastavujeme ako predvolenú hodnotu prázdny reťazec.

Vlastnosť Id sme anotovali atribútom [Key] z menného priestoru System.ComponentModel.DataAnnotations. Týmto atribútom hovoríme, že zodpovedajúci stĺpec v databáze sa vygeneruje s primárnym kľúčom. Každý záznam tak bude môcť v tomto stĺpci obsahovať iba unikátne hodnoty a bude vďaka tomu týmto stĺpcom jednoznačne identifikovateľný. V predvolenom nastavení musia mať všetky entity v Entity Framework Core svoj primárny kľúč.

Databázový kontext

Databázu nám bude spolu s entitou Author popisovať databázový kontext. Databázovým kontextom je akýkoľvek potomok triedy DbContext.

V databázovom kontexte definujeme pripojenie k databáze, aké tabuľky má databáza obsahovať, vzťahy medzi týmito tabuľkami a mnohé ďalšie. Inštancia databázového kontextu predstavuje spojenie s databázou, ktoré je možné použiť na dopytovanie a ukladanie dát do databázy.

Naším databázovým kontextom bude trieda FirstDbContext, ktorú si pridáme do projektu:

Triedu sme zdedili od spomínanej triedy DbContext, ktorú nájdeme v mennom priestore Microsoft.EntityFrameworkCore.

Tabuľky

Jednotlivé tabuľky databázy reprezentujeme v databázovom kontexte vlastnosťami typu DbSet<T>. Pridajme si do nášho databázového kontextu vlastnosť Authors typu DbSet<Author> reprezentujúcu tabuľku autorov:

S takto nadefinovaným databázovým kontextom nám Entity Framework Core neskôr v databáze vygeneruje tabuľku Authors so stĺpcami odvodenými z vlastností triedy Author.

Spojenie s databázou

Aby sme sa mohli pripojiť k akejkoľvek databáze, tak najskôr potrebujeme mať vytvorený tzv. connection string. Ide o reťazec, ktorý obsahuje všetky údaje potrebné na pripojenie k databáze. Typicky obsahuje adresu servera s databázou, názov databázy, prípadné heslo a ďalšie.

Connection string je možné odovzdať databázovému kontextu viacerými spôsobmi, my zvolíme ten najjednoduchší, teda metódu OnConfiguring(). Ide o virtuálnu metódu triedy DbContext, ktorá v parametri prijíma inštanciu triedy DbContextOptionsBuilder. Na tejto inštancii budeme vykonávať všetky konfigurácie spojenia s databázou.

Na konfiguráciu connection stringu ponúka pre triedu DbContextOptionsBuilder každý poskytovateľ databázy svoje rozširujúce metódy. V prípade Microsoft SQL Server databáz sa jedná o metódu UseSqlServer():

V našom databázovom kontexte sme prepísali spomínanú metódu OnConfiguring() a na inštancii triedy DbContextOptionsBuilder zavolali metódu UseSqlServer(). Tejto metóde sme odovzdali connection string popisujúci spojenie k našej budúcej databáze, ktorú nám Entity Framework Core vygeneruje.

Tento connection string sa skladá z dvoch položiek:

  • Server - adresa servera, na ktorom databáza pobeží (v našom prípade sa jedná o LocalDB),
  • Database - názov samotnej databázy (FirstEFCoreDatabase).
To bude pre túto lekciu všetko.

V budúcej lekcii, Generovanie databázy v Entity Framework Core a C# .NET , si z nášho prvého modelu necháme vygenerovať databázu.


 

Predchádzajúci článok
Úvod do Entity Framework Core v C# .NET
Všetky články v sekcii
Entity Framework Core v C# .NET
Preskočiť článok
(neodporúčame)
Generovanie databázy v Entity Framework Core a C# .NET
Článok pre vás napísal Radek Vymětalík
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
...
Aktivity