encyklopedia.space

Entity Framework Core

Entity Framework Core (w skrócie EF Core) to nowoczesny, otwarto‑źródłowy framework ORM (Object‑Relational Mapping) opracowany przez firmę Microsoft. Umożliwia on mapowanie obiektów języka C# i innych języków platformy .NET na relacyjne bazy danych, a także na nie‑relacyjne (np. SQLite, Cosmos DB). EF Core jest następcą klasycznego Entity Framework i od wersji 1.0 został wprowadzony jako lekka, wieloplatformowa alternatywa, działająca na systemach Windows, Linux i macOS.

Historia

Projekt EF Core rozpoczął się w 2014 roku jako część inicjatywy .NET Core. Pierwsza stabilna wersja EF Core 1.0 została wydana w 2016 roku razem z ASP.NET Core. Od tego czasu framework jest regularnie rozwijany – najważniejsze wersje to EF Core 2.0, EF Core 3.0, EF Core 5.0, EF Core 6.0 (LTS) oraz EF Core 7.0.

Główne cechy

  • Wieloplatformowość – EF Core działa na Windows, Linux i macOS w ramach .NET 5/6/7 i nowszych.
  • Wsparcie dla wielu baz danych – m.in. Microsoft SQL Server, PostgreSQL, MySQL, SQLite, Oracle, Azure Cosmos DB.
  • Modelowanie kodowe (Code‑First) i bazodanowe (Database‑First) – pozwala na tworzenie schematu bazy danych z kodu lub generowanie modeli z istniejącej bazy.
  • Migracje – automatyczne zarządzanie zmianami schematu bazy danych przy pomocy poleceń dotnet ef migrations.
  • Ładowanie danych – wsparcie dla eager loading (Include), lazy loading (przy użyciu pakietu Microsoft.EntityFrameworkCore.Proxies) oraz explicit loading.
  • Zapytania LINQ – pełna integracja z językiem zapytań LINQ, pozwalająca na tworzenie silnie typowanych zapytań w C#.
  • Śledzenie zmian – mechanizm change tracking monitorujący modyfikacje obiektów i generujący odpowiednie operacje INSERT, UPDATE, DELETE.
  • Wydajność – optymalizacje wprowadzane w kolejnych wersjach, w tym lepsze generowanie zapytań SQL, wsparcie dla batch operations i zapytań asynchronicznych (await, async).

Podstawowe pojęcia

DbContext
Klasa bazowa, reprezentująca sesję z bazą danych. Zawiera zestawy DbSet<TEntity> odpowiadające tabelom oraz metodę OnModelCreating służącą do konfiguracji modelu.
DbSet
Reprezentuje kolekcję encji danego typu i umożliwia wykonywanie zapytań oraz operacji CRUD.
Entity
Klasa .NET będąca odwzorowaniem wiersza w tabeli bazy danych. Zazwyczaj posiada klucz główny (np. Id).
Migracje
Mechanizm umożliwiający wersjonowanie schematu bazy danych. Komendy dotnet ef migrations add i dotnet ef database update pozwalają tworzyć i stosować zmiany.

Przykładowy kod

// Definicja encji
public class Produkt
{
    public int Id { get; set; }
    public string Nazwa { get; set; }
    public decimal Cena { get; set; }
}

// Kontekst bazodanowy
public class SklepContext : DbContext
{
    public DbSet<Produkt> Produkty { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Server=.;Database=SklepDb;Trusted_Connection=True;");
    }
}

// Przykładowe użycie
using var ctx = new SklepContext();
var nowyProdukt = new Produkt { Nazwa = "Książka", Cena = 29.99m };
ctx.Produkty.Add(nowyProdukt);
ctx.SaveChanges();

var lista = ctx.Produkty
               .Where(p => p.Cena > 20)
               .OrderBy(p => p.Nazwa)
               .ToList();

Zastosowania

EF Core znajduje zastosowanie w różnorodnych scenariuszach, m.in.:

  • aplikacje internetowe tworzone przy użyciu ASP.NET Core,
  • mikroserwisy i API oparte na gRPC,
  • aplikacje desktopowe (.NET WPF, WinForms),
  • oprogramowanie mobilne przy użyciu Xamarin i MAUI,
  • projekty testowe i prototypy, dzięki możliwości szybkiego tworzenia baz in‑memory (UseInMemoryDatabase).

Porównanie z innymi technologiami

W ekosystemie .NET EF Core konkuruje m.in. z:

  • Dapper – mikro‑ORM o bardzo wysokiej wydajności, ale z mniejszą abstrakcją.
  • NHibernate – starszy ORM, bardziej rozbudowany, ale nieco trudniejszy w konfiguracji.
  • ADO.NET – niska warstwa dostępu do danych, wymagająca ręcznego pisania zapytań SQL.

Przyszłość i rozwój

Od wersji 6.0 EF Core przyjął model wsparcia Long‑Term Support (LTS), co oznacza, że kolejna wersja LTS (7.0) będzie utrzymywana przez trzy lata. Społeczność open‑source aktywnie rozwija bibliotekę, dodając wsparcie dla nowych providerów baz danych, usprawnienia w generowaniu zapytań oraz rozbudowane narzędzia diagnostyczne (Logging, EF Core Tools).

Bibliografia i źródła

W encyklopedycznym opracowaniu nie podajemy linków zewnętrznych, ale do dalszego zgłębienia tematu warto zapoznać się z: