Entity Framework Core può accedere a molti database diversi tramite librerie plug-in denominate provider di database.
Provider correnti
Importante
I provider di EF Core vengono compilati da diverse origini. Non tutti i provider vengono mantenuti come parte del progetto Microsoft Entity Framework Core. Quando si prende in considerazione un provider, valutarne con cura gli aspetti relativi a qualità, licenze, supporto e così via, per essere certi che soddisfi i requisiti correnti. Assicurarsi anche di esaminare la documentazione di ogni provider per informazioni dettagliate sulla compatibilità delle versioni.
Importante
I provider EF Core in genere non funzionano tra le versioni principali. Ad esempio, un provider rilasciato per EF Core 8 non funzionerà con EF Core 9.
Pacchetto NuGet |
Motori di database supportati |
Gestore / fornitore |
Note / requisiti |
Per EF Core |
Collegamenti utili |
Microsoft.EntityFrameworkCore.SqlServer |
SQL di Azure, SQL Server 2012 e versioni successive, Azure Synapse Analytics |
Progetto EF Core (Microsoft) |
|
8, 9 |
Documentazione |
Microsoft.EntityFrameworkCore.Sqlite |
SQLite 3.46.1 e versioni successive |
Progetto EF Core (Microsoft) |
|
8, 9 |
Documentazione |
Microsoft.EntityFrameworkCore.InMemory |
Database in memoria EF Core |
Progetto EF Core (Microsoft) |
Limitazioni |
8, 9 |
Documentazione |
Microsoft.EntityFrameworkCore.Cosmos |
API Azure Cosmos DB SQL |
Progetto EF Core (Microsoft) |
|
8, 9 |
Documentazione |
Npgsql.EntityFrameworkCore.PostgreSQL |
PostgreSQL |
Team di sviluppo Npgsql |
|
8, 9 |
Documentazione |
Pomelo.EntityFrameworkCore.MySql |
MySQL, MariaDB |
Progetto Pomelo Foundation |
|
8, 9 |
readme |
MySql.EntityFrameworkCore |
MySQL |
Progetto MySQL (Oracle) |
|
8, 9 |
Documentazione |
Oracle.EntityFrameworkCore |
Oracle DB 11.2 e versioni successive |
Oracolo |
|
8, 9 |
sito web |
MongoDB.EntityFrameworkCore |
MongoDB |
MongoDB |
|
8 |
Documentazione |
Couchbase.EntityFrameworkCore |
Couchbase |
Couchbase |
|
8, 9 |
Documentazione |
Devart.Data.MySql.EFCore |
MySQL 5 e versioni successive |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.Oracle.EFCore |
Oracle DB 9.2.0.4 e versioni successive |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.PostgreSql.EFCore |
PostgreSQL 8.0 e versioni successive |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.SQLite.EFCore |
SQLite 3 e versioni successive |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.DB2.EFCore |
DB2 |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.Big commerce.EFCore |
Big Commerce |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.Dynamics.EFCore |
Microsoft Dynamics 365 |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.FreshBooks.EFCore |
FreshBooks |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.Innamorati.EFCore |
Magento |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.MailChimp.EFCore |
Mailchimp |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.QuickBooks.EFCore |
QuickBooks |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.Salesforce.EFCore |
Salesforce |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.ExactTarget.EFCore |
Salesforce MC (ExactTarget) |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.Sugar.EFCore |
SugarCRM |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.Zoho.EFCore |
Zoho CRM |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.ZohoBooks.EFCore |
Zoho Books |
DevArt |
Pagato |
8, 9 |
Documentazione |
Devart.Data.ZohoDesk.EFCore |
Zoho Desk |
DevArt |
Pagato |
8, 9 |
Documentazione |
MASES. EntityFrameworkCore.KNet |
Apache Kafka |
Gruppo MASES |
Versione di valutazione, sottoscrizione |
8 |
Documentazione |
InterBase |
InterBase |
InterBase |
|
8 |
Documentazione |
FirebirdSql.EntityFrameworkCore.Firebird |
Firebird 3.0 e versioni successive |
Jiří Činčura |
|
8 |
Documentazione |
IBM. EntityFrameworkCore |
Db2, Informix |
IBM |
A pagamento, Windows |
8 |
esercitazione introduttiva |
IBM. EntityFrameworkCore-lnx |
Db2, Informix |
IBM |
A pagamento, Linux |
8 |
esercitazione introduttiva |
IBM. EntityFrameworkCore-osx |
Db2, Informix |
IBM |
A pagamento, macOS |
8 |
esercitazione introduttiva |
EntityFrameworkCore.Jet |
File di Microsoft Access |
CirrusRedOrg |
Finestre |
8, 9 |
readme |
Google.Cloud.EntityFrameworkCore.Spanner |
Google Cloud Spanner |
Ecosistema Cloud Spanner |
|
8 |
esercitazione |
Teradata.EntityFrameworkCore |
Database Teradata 16.10 e versioni successive |
Teradata |
|
3 |
sito web |
FileContextCore |
Archivia i dati nei file |
Morris Janatzek |
A scopo di sviluppo |
3 |
readme |
FileBaseContext |
Archiviare tabelle nei file |
k.D.g |
A scopo di sviluppo |
8, 9 |
readme |
EntityFrameworkCore.SqlServerCompact35 |
SQL Server Compact 3.5 |
Erik Ejlskov Jensen |
.NET Framework |
2 |
wiki |
EntityFrameworkCore.SqlServerCompact40 |
SQL Server Compact 4.0 |
Erik Ejlskov Jensen |
.NET Framework |
2 |
wiki |
EntityFrameworkCore.OpenEdge |
Avanzamento OpenEdge |
Alex Wiese |
|
2 |
readme |
EFCore.Snowflake |
Fiocco di neve |
Krzysztof Sielaff |
|
8 |
readme |
Aggiunta di un provider di database all'applicazione
La maggior parte dei provider di database per EF Core viene distribuita in forma di pacchetti NuGet e può essere installata come segue:
dotnet add package provider_package_name
install-package provider_package_name
Dopo l'installazione, il provider verrà configurato nel DbContext
, nel metodo OnConfiguring
o nel metodo AddDbContext
se si usa un contenitore di inserimento delle dipendenze.
Ad esempio, la riga seguente consente di configurare il provider SQL Server con la stringa di connessione passata:
optionsBuilder.UseSqlServer(
@"Server=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;");
I provider di database possono estendere EF Core per abilitare funzionalità univoche per database specifici. Alcuni concetti sono comuni alla maggior parte dei database e sono inclusi nei componenti primari di EF Core. Tali concetti includono l'espressione di query in LINQ, le transazioni e il rilevamento delle modifiche agli oggetti dopo che sono stati caricati dal database.
Alcuni concetti sono specifici di un determinato provider. Il provider SQL Server, ad esempio, consente di configurare le tabelle ottimizzate per la memoria, una funzionalità specifica di SQL Server. Altri concetti sono specifici di una classe di provider.
Ad esempio, i provider EF Core per i database relazionali si basano sulla libreria comune Microsoft.EntityFrameworkCore.Relational
, che fornisce API per la configurazione di mapping di tabelle e colonne, vincoli di chiave esterna e così via. I provider vengono in genere distribuiti come pacchetti NuGet.
Importante
Quando viene rilasciata una nuova versione di patch di EF Core, spesso include aggiornamenti per il pacchetto Microsoft.EntityFrameworkCore.Relational
.
Quando si aggiunge un provider di database relazionale, il pacchetto diventa una dipendenza transitiva dell'applicazione.
Molti provider vengono però rilasciati in modo indipendente da EF Core e potrebbero non essere aggiornati in modo da dipendere dalla versione di patch più recente del pacchetto.
Per assicurarsi di ottenere tutte le correzioni di bug, è consigliabile aggiungere la versione di patch di Microsoft.EntityFrameworkCore.Relational
come dipendenza diretta dell'applicazione.