Udostępnij za pośrednictwem


Pakiety NuGet platformy EF Core

Program Entity Framework Core (EF Core) jest dostarczany jako pakiety NuGet . Pakiety wymagane przez aplikację zależą od:

  • Typ używanego systemu bazy danych (SQL Server, SQLite itp.)
  • Wymagane funkcje platformy EF Core

Typowym procesem instalowania pakietów jest:

  • Zdecyduj się na dostawcę bazy danych i zainstaluj odpowiedni pakiet (zobacz poniżej)
  • Zainstaluj również elementy Microsoft.EntityFrameworkCore i Microsoft.EntityFrameworkCore.Relational , jeśli korzystasz z dostawcy relacyjnej bazy danych. Pomaga to zagwarantować, że są używane spójne wersje, a także oznacza, że pakiet NuGet poinformuje Cię o wysłaniu nowych wersji pakietów.
  • Opcjonalnie zdecyduj, jakiego rodzaju narzędzia potrzebujesz, i zainstaluj odpowiednie pakiety dla tego (zobacz poniżej)

Aby uzyskać pomoc dotyczącą rozpoczynania pracy z programem EF Core, zobacz Wprowadzenie do programu Entity Framework Core.

Wersje pakietów

Upewnij się, że zainstalowano tę samą wersję wszystkich pakietów EF Core dostarczanych przez firmę Microsoft. Jeśli na przykład jest zainstalowana wersja 5.0.3 microsoft.EntityFrameworkCore.SqlServer, wszystkie inne pakiety Microsoft.EntityFrameworkCore.* również muszą mieć wartość 5.0.3.

Upewnij się również, że wszystkie pakiety zewnętrzne są zgodne z używaną wersją programu EF Core. W szczególności sprawdź, czy zewnętrzny dostawca bazy danych obsługuje używaną wersję programu EF Core. Nowe wersje główne platformy EF Core zwykle wymagają zaktualizowanego dostawcy bazy danych.

Ostrzeżenie

Pakiet NuGet nie wymusza spójnych wersji pakietów. Zawsze dokładnie sprawdź, które wersje pakietu odwołują się do .csproj pliku lub równoważnego.

Dostawcy baz danych

Program EF Core obsługuje różne systemy baz danych przy użyciu "dostawców baz danych". Każdy system ma własnego dostawcę bazy danych, który jest dostarczany jako pakiet NuGet. Aplikacje powinny instalować co najmniej jeden z tych pakietów dostawcy.

Typowi dostawcy baz danych są wymienieni w poniższej tabeli. Zobacz dostawcy baz danych, aby uzyskać bardziej kompleksową listę dostępnych dostawców.

System bazy danych Pakiet
SQL Server i Usługi SQL Azure Microsoft.EntityFrameworkCore.SqlServer
SQLite Microsoft.EntityFrameworkCore.Sqlite
Azure Cosmos DB Microsoft.EntityFrameworkCore.Cosmos
PostgreSQL Npgsql.EntityFrameworkCore.PostgreSQL*
MySQL Pomelo.EntityFrameworkCore.MySql*
Baza danych ef Core w pamięci** Microsoft.EntityFrameworkCore.InMemory

*Są to popularni, wysokiej jakości dostawcy open source opracowani i dostarczani przez społeczność. Inni dostawcy wymienieni są wysłani przez firmę Microsoft.

**Dokładnie zastanów się, czy należy użyć dostawcy w pamięci. Nie jest przeznaczony do użytku produkcyjnego, a także może nie być najlepszym rozwiązaniem do testowania.

Narzędzia

Korzystanie z narzędzi na potrzeby migracji platformy EF Core i inżynierii odwrotnej (szkieletu) z istniejącej bazy danych wymaga zainstalowania odpowiedniego pakietu narzędzi:

Aby uzyskać więcej informacji na temat używania narzędzi EF Core, zobacz Entity Framework Core Tools Reference (Dokumentacja narzędzi platformy Entity Framework Core), w tym sposób poprawnego instalowania dotnet-ef narzędzia w projekcie lub globalnie.

Napiwek

Domyślnie pakiet Microsoft.EntityFrameworkCore.Design jest instalowany w taki sposób, że nie zostanie wdrożony z aplikacją. Oznacza to również, że jego typy nie mogą być przechodnio używane w innych projektach. Jeśli potrzebujesz dostępu do typów w tym pakiecie, użyj normalnego PackageReference pliku .csproj lub równoważnego. Aby uzyskać więcej informacji, zobacz Usługi czasu projektowania.

Pakiety rozszerzeń

Istnieje wiele rozszerzeń dla platformy EF Core publikowanych zarówno przez firmę Microsoft, jak i innych firm jako pakiety NuGet. Często używane pakiety obejmują:

Funkcje Pakiet Dodatkowe zależności
Serwery proxy do ładowania z opóźnieniem i śledzenia zmian Microsoft.EntityFrameworkCore.Proxies Castle.Core
Obsługa przestrzenna programu SQL Server Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite NetTopologySuite i NetTopologySuite.IO.SqlServerBytes
Obsługa przestrzenna sqlite Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite NetTopologySuite i NetTopologySuite.IO.SpatiaLite
Obsługa przestrzenna bazy danych PostgreSQL Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite NetTopologySuite i NetTopologySuite.IO.PostGIS (za pośrednictwem aplikacji Npgsql.NetTopologySuite)
Obsługa przestrzenna bazy danych MySQL Pomelo.EntityFrameworkCore.MySql.NetTopologySuite NetTopologySuite

Inne pakiety

Inne pakiety EF Core są ściągane jako zależności pakietu dostawcy bazy danych. Można jednak dodać jawne odwołania do pakietów, aby program NuGet dostarczał powiadomienia po wydaniu nowych wersji.

Funkcje Pakiet
Podstawowe funkcje platformy EF Core Microsoft.EntityFrameworkCore
Typowe funkcje relacyjnej bazy danych Microsoft.EntityFrameworkCore.Relational
Uproszczony pakiet dla atrybutów programu EF Core itp. Microsoft.EntityFrameworkCore.Abstractions
Analizatory kodu Roslyn na potrzeby użycia platformy EF Core Microsoft.EntityFrameworkCore.Analyzers
Dostawca EF Core SQLite bez natywnej zależności SQLite Microsoft.EntityFrameworkCore.Sqlite.Core
Implementacja funkcji czasu projektowania współużytkowane przez narzędzia EF Microsoft.EntityFrameworkCore.Design

Pakiety na potrzeby testowania dostawcy bazy danych

Następujące pakiety są używane do testowania dostawców baz danych wbudowanych w zewnętrzne repozytoria GitHub. Zobacz przykłady efcore.pg i Pomelo.EntityFrameworkCore.MySql . Aplikacje nie powinny instalować tych pakietów.

Funkcje Pakiet
Testy dla dowolnego dostawcy bazy danych Microsoft.EntityFrameworkCore.Specification.Tests
Testy dostawców relacyjnej bazy danych Microsoft.EntityFrameworkCore.Relational.Specification.Tests

Przestarzałe pakiety

Nie instaluj następujących przestarzałych pakietów i usuń je, jeśli są one obecnie zainstalowane w projektach:

  • Microsoft.EntityFrameworkCore.Relational.Design
  • Microsoft.EntityFrameworkCore.Tools.DotNet
  • Microsoft.EntityFrameworkCore.SqlServer.Design
  • Microsoft.EntityFrameworkCore.Sqlite.Design
  • Microsoft.EntityFrameworkCore.Relational.Design.Specification.Tests