Definicja #
Entity Framework Core to oficjalny ORM Microsoftu dla platformy .NET, wydany w 2016 roku jako ewolucja Entity Framework 6. EF Core jest open source (MIT), wieloplatformowy i znacznie wydajniejszy od poprzednika.
Kluczowe cechy:
- Code First — definiowanie modelu w klasach C#, automatyczne generowanie schematu bazy danych przez migracje.
- Database First — generowanie klas C# ze istniejącej bazy danych (scaffold).
- Migracje — zarządzanie zmianami schematu bazy danych (Add-Migration, Update-Database).
- LINQ — silnie typowane zapytania kompilowane do SQL; IntelliSense i refaktoring.
- Dostawcy baz danych — SQL Server, PostgreSQL (Npgsql), MySQL, SQLite, Oracle, Cosmos DB i inne.
- Śledzenie zmian (Change Tracking) — automatyczne wykrywanie zmodyfikowanych encji i generowanie SQL UPDATE.
- Owned Types, Value Converters, Raw SQL — zaawansowane wzorce mapowania.
EF Core wspiera wzorzec Repository, Unit of Work (DbContext), lazy/eager/explicit loading relacji. W .NET 8+ wprowadzono HierarchyId, primitive collections i kompilowane modele dla lepszej wydajności startowania.
Zastosowania #
- CRUD aplikacji ASP.NET Core z automatycznymi migracjami schematu przy wdrożeniu.
- Implementacja wzorca Repository Pattern i Unit of Work w architekturze DDD.
- Integracja z Azure Cosmos DB przez Cosmos DB Provider — modele dokumentowe w C#.
- Generowanie raportów przez skomplikowane LINQ queries z Group By i projekcjami.
- Migracja z klasycznego Entity Framework 6 do EF Core w projektach .NET modernization.
Ścieżka nauki #
EF Core jest dobrze udokumentowany i łatwy do opanowania dla programistów C#:
- Oficjalna dokumentacja learn.microsoft.com/ef/core — wyjątkowo szczegółowa i aktualna.
- Zacznij od tutorial "Getting Started with EF Core" — tworzy prostą aplikację konsolową lub ASP.NET Core.
- Naucz się migracji — Add-Migration, Update-Database, rollback.
- Poznaj wzorce ładowania relacji: Include() (eager), ThenInclude(), lazy loading przez proxy.
- Kurs Pluralsight "Entity Framework Core" — Julie Lerman jest najlepszą ekspertką EF.
- Ćwicz z różnymi dostawcami: SQLite (testy integracyjne), SQL Server (produkcja).
FAQ #
- Czym różni się EF Core od Dapper?
- EF Core to pełnoprawny ORM z śledzeniem zmian, migracjami i LINQ — wysoka produktywność przy koszcie dodatkowej warstwy abstrakcji. Dapper to micro-ORM — mapuje wyniki SQL na obiekty C# bez Change Trackera; wymaga ręcznego pisania SQL, ale jest szybszy i daje pełną kontrolę nad zapytaniami. W SolidJobs używany jest NHibernate, który jest alternatywą EF Core.
- Czy EF Core jest wolny?
- EF Core jest znacznie szybszy niż klasyczny EF 6 i w typowych scenariuszach CRUD jest porównywalny z Dapper. Dla krytycznych ścieżek wydajnościowych można używać FromSqlRaw() lub Dapper obok EF Core. EF Core 7+ wprowadził Bulk Updates/Deletes (ExecuteUpdate/ExecuteDelete) bez ładowania encji do pamięci.
- Jak działają migracje w EF Core?
- Migracje w EF Core to pliki C# reprezentujące zmiany schematu bazy danych. Add-Migration generuje plik z metodami Up() i Down(). Update-Database aplikuje migracje do bazy. Historia migracji jest przechowywana w tabeli __EFMigrationsHistory. Migracje można stosować automatycznie przy starcie aplikacji (MigrateAsync).
- EF Core vs NHibernate — co wybrać?
- EF Core to oficjalny ORM Microsoftu, lepiej zintegrowany z .NET ekosystemem, prostszy w nauce. NHibernate to port Hibernate z Javy — dojrzalszy, bardziej konfigurowalny, lepszy dla złożonych mapowań. EF Core jest zalecany dla nowych projektów .NET; NHibernate nadal używany w wielu systemach enterprise i legacy.