Code-First s Entity Framework
Entity Framework Core umožňuje vytvoriť databázu priamo z kódu bez toho, aby si musel najprv ručne definovať tabuľky. Tento prístup sa nazýva Code-First. V tomto článku si ukážeme jednoduchý príklad s dvomi triedami a celým procesom od modelu až po migráciu na databázový server.
1. Inštalácia EF Core balíkov (cez Visual Studio)
Otvorte Visual Studio → Tools → NuGet Package Manager → Package Manager Console.
Pre SQL Server nainštalujte tieto balíky:
Install-Package Microsoft.EntityFrameworkCore Install-Package Microsoft.EntityFrameworkCore.SqlServer Install-Package Microsoft.EntityFrameworkCore.Tools
2. Modelové triedy (Product a Category)
Vytvoríme dva jednoduché modely s väzbou 1:N – kategória môže mať viac produktov.
Category.cs
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public List Products { get; set; }
}
Product.cs
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
}
3. DbContext trieda
DbContext je most medzi aplikáciou a databázou.
AppDbContext.cs
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(
"Server=localhost;Database=EfDemo;Trusted_Connection=True;TrustServerCertificate=True");
}
}
4. Vytvorenie prvej migrácie (Package Manager Console)
V konzole vygenerujte prvú migráciu:
Add-Migration InitialCreate
A preneste ju do databázy:
Update-Database
V tejto chvíli je databáza fyzicky vytvorená s dvomi tabuľkami: Categories a Products.
5. Zmena modelu – pridanie nového parametra
Pridáme do modelu Product nový parameter, napr. Stock:
Upravený Product.cs
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public int Stock { get; set; } // nový parameter
public int CategoryId { get; set; }
public Category Category { get; set; }
}
Vytvorenie ďalšej migrácie:
Add-Migration AddProductStock
Aktualizácia databázy:
Update-Database
EF Core automaticky rozpozná zmenu a vytvorí SQL príkaz na pridanie nového stĺpca do tabuľky Products.
6. Aplikovanie migrácie na vzdialený databázový server
Ak chceš migráciu poslať do inej databázy (napr. server v cloude alebo v práci), stačí upraviť connection string v AppDbContext.
Príklad pre SQL Server v cloude:
// v AppDbContext:
optionsBuilder.UseSqlServer(
"Server=tcp:mojserver.database.windows.net,1433;
Initial Catalog=EfDemoRemote;
User ID=mojeMeno;
Password=mojeHeslo;
Encrypt=True;
TrustServerCertificate=False");
Potom jednoducho spustíš:
Update-Database
...a migrácia sa prenesie na vzdialený server.
7. Jednoduchý test – vloženie dát
using var db = new AppDbContext();
var cat = new Category { Name = "Electronics" };
db.Categories.Add(cat);
db.Products.Add(new Product
{
Name = "Arduino Uno",
Price = 25.5m,
Stock = 10,
Category = cat
});
db.SaveChanges();
Po spustení aplikácie sa údaje uložia do databázy.
🎯 Zhrnutie
- Vytvorili sme 2 modely – Product a Category
- Definovali sme DbContext
- Vytvorili migráciu cez Add-Migration
- Databázu sme vytvorili cez Update-Database
- Ukázali sme si, ako spraviť ďalšiu migráciu po úprave modelu
- Ukázali sme aj migráciu na vzdialený SQL Server
Toto je najjednoduchší a najprehľadnejší spôsob, ako začať s EF Core Code-First v .NET.