Entity Framework Core to lżejsza wersja starszego brata Entity Framework. Jego najważniejsza zaleta to możliwość wykorzystania w projektach .NET Core, czyli tym samym użycie na wielu platformach. Dziś opiszę swoje pierwsze przygody z EF Core.
Aby rozpocząć pracę z EF Core należy dodać bibliotekę poprzez dotnet add package Microsoft.EntityFrameworkCore.SqlServer
. Dlatego, że korzystam z MS SQL Server wybrałem właśnie takiego dostawcę dla EF Core. Warto w tym miejscu wspomnieć, że po za MS SQL Server można połączyć się m.in. z:
- SQLite
- InMemory
- MySQL
- PostgreSQL
W szczególności ciekawą opcję wydaje mi się InMemory, który pozwala na prototypowanie i testowania aplikacji bez konfiguracji lokalnego lub zewnętrznego środowiska bazodanowego. A jeśli zajdzie potrzeba pracy w środowisku produkcyjnym wystarczy przełączyć dostawcę (providera).
Utworzyłem prosty program, który dodaje obiekty typu Blog
do bazy danych.
Tak wygląda ciało klasy Blog
.
Dodatkowo utworzyłem klasę EFContext
w której odbywa się komunikacja z bazą dancyh. Co istotne dzięki dziedziczonemu DbContext
można odpytywać i zapisywać dane. W moim przypadku klasa Blog
będzie reprezentować model tabeli bazy danych dlatego, została utworzona właściowość typu DbSet<Blog>
.
Teraz należy użyć narzędzia dotnet ef
, które wygeneruje odpowiedni kod wykonujący polecenia SQL tworzące bazę danych. Jednak najpierw zależności - dodajemy dotnet add package Microsoft.EntityFrameworkCore.Design
. Potem z konsoli można wywołać dotnet ef migrations add InitialCreate
. Zostanie utworzony nowy folter Migrations
.
Niestety u mnie nie powiodło się to za pierwszym razem, konsola zwracała błąd, polecenie dotnet ef
nie zostało znalezione. Okazało się, że wraz z dodaniem Microsoft.EntityFrameworkCore.Design
powinna automatycznie znaleźć się w zależnościach biblioteka Microsoft.EntityFrameworkCore.Tools.DotNet
odpowiedzialna za narzędzia EF, musiałem ją dodać ręcznie. Finalnie *.csproj
wygląda tak:
Następnie należy wykonać dotnet ef database update
, które na podstawie najświeższego pliku migrancyjnego modyfikuje bazę danych (usuwa i tworzy tabele).
Finalnie prosty kawałek kodu, który dodaje nowego bloga do bazy danych, a następnie wyświetla wszyskie istniejące wiersze tabeli Blogs
wygląda następująco.
To co przedstawiłem to tylko wierzchołek góry lodowej, po więcej odsyłam do dokumentacji. Wraz z postępami przy projekcie DataBoard na pewno pojawi się więcej informacji o EFCore.