Provider di database

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 7 non funzionerà con EF Core 8.

Pacchetto NuGet Motori di database supportati Gestore / fornitore Note / requisiti Per EF Core Collegamenti utili
Microsoft.EntityFrameworkCore.SqlServer SQL di Azure e SQL Server 2012 e versioni successive Progetto EF Core (Microsoft) 6, 7, 8 Documentazione
Microsoft.EntityFrameworkCore.Sqlite SQLite 3.7 e versioni successive Progetto EF Core (Microsoft) 6, 7, 8 Documentazione
Microsoft.EntityFrameworkCore.InMemory Database in memoria EF Core Progetto EF Core (Microsoft) Limitazioni 6, 7, 8 Documentazione
Microsoft.EntityFrameworkCore.Cosmos API Azure Cosmos DB SQL Progetto EF Core (Microsoft) 6, 7, 8 Documentazione
Npgsql.EntityFrameworkCore.PostgreSQL PostgreSQL Team di sviluppo Npgsql 6, 7, 8 Documentazione
Pomelo.EntityFrameworkCore.MySql MySQL, MariaDB Progetto Pomelo Foundation 6, 7, 8 readme
MySql.EntityFrameworkCore MySQL Progetto MySQL (Oracle) 6, 7 Documentazione
Oracle.EntityFrameworkCore Oracle DB 11.2 e versioni successive Oracle 6, 7 website
MongoDB.EntityFrameworkCore MongoDB MongoDB Attualmente in anteprima 7 Documentazione
Devart.Data.MySql.EFCore MySQL 5 e versioni successive DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.Oracle.EFCore Oracle DB 9.2.0.4 e versioni successive DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.PostgreSql.EFCore PostgreSQL 8.0 e versioni successive DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.SQLite.EFCore SQLite 3 e versioni successive DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.DB2.EFCore DB2 DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.Big commerce.EFCore BigCommerce DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.Dynamics.EFCore Microsoft Dynamics 365 DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.FreshBooks.EFCore FreshBooks DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.Innamorati.EFCore Magento DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.MailChimp.EFCore Mailchimp DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.QuickBooks.EFCore QuickBooks DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.Salesforce.EFCore Salesforce DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.ExactTarget.EFCore Salesforce MC (ExactTarget) DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.Sugar.EFCore SugarCRM DevArt Pagato 6, 7, 8 Documentazione
Devart.Data.Zoho.EFCore Zoho CRM DevArt Pagato 6, 7, 8 Documentazione
MA edizione Standard S.EntityFrameworkCore.KNet Apache Kafka Gruppo MA edizione Standard S Versione di valutazione, sottoscrizione 6, 7, 8 Documentazione
Interbase Interbase Interbase 6 Documentazione
FirebirdSql.EntityFrameworkCore.Firebird Firebird 3.0 e versioni successive Jiří Činčura 7 Documentazione
IBM.EntityFrameworkCore Db2, Informix IBM Paid, Windows 6 esercitazione introduttiva
IBM.EntityFrameworkCore-lnx Db2, Informix IBM Paid, Linux 6 esercitazione introduttiva
IBM.EntityFrameworkCore-osx Db2, Informix IBM Paid, macOS 6 esercitazione introduttiva
EntityFrameworkCore.Jet File di Microsoft Access CirrusRedOrg Windows 6, 7, 8 (anteprima) readme
Google.Cloud.EntityFrameworkCore.Spanner Google Cloud Spanner Cloud Spanner Ecosystem Attualmente in anteprima 6 esercitazione
Teradata.EntityFrameworkCore Database Teradata 16.10 e versioni successive Teradata 3 website
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 7, 8 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 Progress OpenEdge Alex Wiese 2 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

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.