Dolaskom .NET Core tehnologije Microsoft je svoj utjecaj proširio i na open-source svijet. Unatoč upitnoj stabilnosti, community oko njega dobro se drži i stabilno raste.
Klasičan stack nekih enterprise aplikacije koju podupiru Microsoft tehnologije je poprilično skupa investicija, pogotovo za tvrtke koje su tek krenule u razvoj, a klijent nema ili ne želi izdvojiti pozamašan iznos za prateću infrastrukturu.
U ovom članku predstavit ću brz i besplatan način za početak razvoja aplikacije koja je skalabilna i koristi već jednu Microsoftovu out-of-the-box značajku. Radi se o Identityju. Cijelu aplikaciju će držati backend na .NET Core platformi, a baza podataka će biti na MySQL-u.
Možemo li imati aplikaciju na .NET Core platformi s MySQL bazom?
Naravno da možete, a i ne propuštate mnogo ako nemate enterprise verziju Microsoft SQL Servera. Poznata je činjenica da Entity Framework ima drivere i za druge baze podataka osim MSSQL i MySQL baze. Među ostalim, tu su i Oracle, PostgreSQL, SQLite, DB2 i mnogi drugi.
Pretpostavka je da imate instaliran i konfiguriran MySQL na svojem računalu. Ako nemate, preporuka je da instalirate MySQL sa službene stranice ili kao u ovom članku, instalirajte cijeli WAMP stack radi PHPMyAdmin sučelja.
Za najlakši i najbrži način do rezultata preporučam da imate instaliran Visual Studio i WAMP. Nakon što imate sve što je potrebno možemo započeti.
Za početak potrebno je napraviti novi solution koji sadrži .NET Core projekt, a to možemo odraditi ovako:
Za authentication ćemo odabrati Individual User Accounts.
Ako smo dobro napravili konfiguraciju WAMP servera, trebali bismo moći doći do phpMyAdmin sučelja. Standardno nakon konfiguracije, adresa je http://localhost/phpMyAdmin (u mom slučaju http://localhost:8069/phpMyAdmin).
Na lijevoj strani sučelja trebali bismo vidjeti popis MySql baza podataka koje imate na svom serveru. Trenutno nema baze koja nas zanima. Kako bi naša aplikacija sama kreirala kroz Entity Framework potrebno je podesiti par sitnica.
Za početak, treba nam package koji ćemo skinuti kako bi Entity Framework znao raditi s našom MySql bazom. Nažalost, Entity Framework Core provider za MySql bazu je prerelease i ne radi očekivano out of the box. Zato sam uspio, nakon isprobavanja, više providera naći jedan koji zadovoljava moje potrebe. U svojoj službenoj dokumentaciji, Entity Framework uz svoj provider piše i o Pomelo library-ju.
Da bi u Visual Studiju instalirali paket potrebno je u Solution Exploreru desnim klikom kliknuti na Projekt (U našem slučaju Test Project), odabrati Manage NuGet packages. Paket koji tražimo zove se Pomelo.EntityFrameworkCore.MySql.
Da bi Pomelo radio potrebno je još u klasi ConfigureServices.cs izmjeniti metodu da izgleda ovako:
Glavna razlika je u tome što smo umjesto UseSqlServer stavili UseMySql. Nakon toga potrebno je spremiti izmjene, napraviti build solutiona i probati kreirati Initial migraciju.
Kako bi to napravili potrebno je otvoriti command prompt u direktoriju našeg projekta (Ne solutiona!) ili u Visual Studiu u Package Manageru upisati naredbu.
Naredba dotnet ef migrations add Initial dodaje novu migraciju, odnosno entity framework pokupi sve modele i veze među njima i iz toga generira Code First klasu u kojoj je migracija. Code First znači da bez znanja SQLa možemo opisati bazu podataka, tablice u njoj i veze među njima.
Prije nego što krenemo kreirati Migracije, potrebno je još u appsettings.json izmjeniti connection string da izgleda ovako:
Nakon izmjene, idemo dodati našu prvu migraciju. Entity framework iz vaših promjena kreira klasu kako bi mogli na neki način verzionirati bazu podataka. Svaki put kada napravite neku promjenu na modelu koji je vezan uz bazu i napravite novu migraciju, entity framework će se spojiti na bazu, pogledati koje su razlike između postojećeg stanja baze i izmijenjenih modela. Nakon usporedbe, kreirat će novu migracijsku klasu u vašem projektu.
Dodavanje migracije
Nakon toga trebamo napraviti update na bazi. To ćemo napraviti pomoću naredbe dotnet ef database update.
Povratkom na phpMyAdmin i nakon refresha u lijevom dijelu sučelja trebali bi vidjeti bazu i tablice koje se nalaze u njoj.
Sada nam još preostaje provjeriti kreira li naša aplikacija nove usere ispravno.
Pokretanje projekta
Iz Visual Studia pokrenimo projekt:
.NET Core podiže Command prompt prozor, odnosno server na kojem se nalazi naša aplikacija, i otvara browser na adresi na kojoj se nalazi naša aplikacija.
Idemo se probati registrirati kao novi korisnik:
Gore u desnom kutu naše aplikacije vidimo da smo se uspješno registrirali i ulogirali:
Za kraj, provjerimo u bazi podataka postoji li zapis o našem novom korisniku:
I to je to. Imamo .NET Core aplikaciju koja koristi Identity na MySQL bazi podataka. Sve ostalo što se tiče razvoja je više-manje isto kao kad radite s klasičnom kombinacijom (.NET aplikacija i Microsoft SQL baza).
Što dalje?
Što god želite. Mogućnosti su beskrajne!
Sretno programiranje 🙂