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 pakietuMicrosoft.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ęOnModelCreatingsł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 addidotnet ef database updatepozwalają 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:
- oficjalną dokumentacją Entity Framework Core dostępną w ramach serwisu Microsoft Docs,
- książkami i kursami poświęconymi C# oraz platformie .NET,
- artykułom na temat projektowania baz danych i SQL.