Fournisseurs de bases de données

Entity Framework Core peut accéder à différentes bases de données par le biais de bibliothèques plug-in appelées fournisseurs de base de données.

Fournisseurs actuels

Important

Les fournisseurs EF Core sont créés à partir de différentes sources. Les fournisseurs ne sont pas tous gérés dans le cadre du projet Entity Framework Core. Quand vous envisagez un fournisseur, veillez à évaluer la qualité, la gestion des licences, la prise en charge, etc., pour vérifier qu’il répond à vos besoins. Veillez également à passer en revue la documentation de chaque fournisseur pour obtenir des informations détaillées sur la compatibilité des versions.

Important

Les fournisseurs EF Core fonctionnent généralement avec des versions mineures, mais pas avec des versions majeures. Par exemple, un fournisseur publié pour EF Core 2.1 doit fonctionner avec EF Core 2.2, mais il ne fonctionnera pas avec EF Core 3.0.

Package NuGet Moteurs de base de données pris en charge Chargé de maintenance / fournisseur Remarques / exigences Créé pour la version Liens utiles
Microsoft.EntityFrameworkCore.SqlServer SQL Server 2012 et ultérieur Projet EF Core (Microsoft) 6.0 docs
Microsoft.EntityFrameworkCore.Sqlite SQLite 3.7 et ultérieur Projet EF Core (Microsoft) 6.0 docs
Microsoft.EntityFrameworkCore.InMemory Fournisseur en mémoire EF Core Projet EF Core (Microsoft) Limitations 6.0 docs
Microsoft.EntityFrameworkCore.Cosmos API SQL Azure Cosmos DB Projet EF Core (Microsoft) 6.0 docs
Npgsql.EntityFrameworkCore.PostgreSQL PostgreSQL Équipe de développement Npgsql 6.0 docs
Pomelo.EntityFrameworkCore.MySql MySQL, MariaDB Projet Pomelo Foundation 6.0 readme
MySql.EntityFrameworkCore MySQL Projet MySQL (Oracle) 6.0 docs
Oracle.EntityFrameworkCore Oracle DB 11.2 et versions ultérieures Oracle 6.0 site web
Devart.Data.MySql.EFCore MySQL 5 et ultérieur DevArt Payé 6.0 docs
Devart.Data.Oracle.EFCore Oracle DB 9.2.0.4 et versions ultérieures DevArt Payé 6.0 docs
Devart.Data.PostgreSql.EFCore PostgreSQL 8.0 et ultérieur DevArt Payé 6.0 docs
Devart.Data.SQLite.EFCore SQLite 3 et ultérieur DevArt Payé 6.0 docs
FirebirdSql.EntityFrameworkCore.Firebird Firebird 3.0 et versions ultérieures Jiří Činčura 6.0 docs
IBM.EntityFrameworkCore Db2, Informix IBM Payant, Windows 6.0 Bien démarrer
IBM.EntityFrameworkCore-lnx Db2, Informix IBM Payant, Linux 6.0 Bien démarrer
IBM.EntityFrameworkCore-osx Db2, Informix IBM Payant, macOS 6.0 Bien démarrer
EntityFrameworkCore.Jet Fichiers Microsoft Access Bubi 3.1 readme
Teradata.EntityFrameworkCore Teradata Database 16.10 et versions ultérieures Teradata 3.1 site web
Google.Cloud.EntityFrameworkCore.Spanner Google Cloud Spanner Écosystème Cloud Spanner Actuellement en préversion 3.1 didacticiel
FileContextCore Stocke les données dans des fichiers Morris Janatzek À des fins de développement 3.0 readme
EntityFrameworkCore.SqlServerCompact35 SQL Server Compact 3.5 Erik Ejlskov Jensen .NET Framework 2.2 wiki
EntityFrameworkCore.SqlServerCompact40 SQL Server Compact 4,0 Erik Ejlskov Jensen .NET Framework 2.2 wiki
EntityFrameworkCore.OpenEdge Progress OpenEdge Alex Wiese 2.1 readme

Ajout d’un fournisseur de base de données à votre application

La plupart des fournisseurs de base de données pour EF Core sont distribués sous la forme de packages NuGet et peuvent être installés comme suit :

dotnet add package provider_package_name

Une fois les packages installés, configurez le fournisseur dans votre DbContext : soit dans la méthode OnConfiguring, soit dans la méthode AddDbContext si vous utilisez un conteneur d’injection de dépendance. Par exemple, la ligne suivante configure le fournisseur SQL Server avec la chaîne de connexion passée :

optionsBuilder.UseSqlServer(
    "Server=(localdb)\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;");

Les fournisseurs de base de données peuvent étendre Core EF pour activer des fonctionnalités propres à des bases de données spécifiques. Certains concepts, communs à la plupart des bases de données, sont inclus dans les principaux composants d’EF Core. Ces concepts comprennent l’expression des requêtes dans LINQ, les transactions et le suivi des changements apportés aux objets une fois qu’ils sont chargés à partir de la base de données. Certains concepts sont propres à un fournisseur. Par exemple, le fournisseur SQL Server vous permet de configurer des tables à mémoire optimisée (fonctionnalité spécifique à SQL Server). D’autres concepts sont propres à une classe de fournisseurs. Par exemple, les fournisseurs EF Core pour les bases de données relationnelles reposent sur la bibliothèque Microsoft.EntityFrameworkCore.Relational commune, qui fournit des API pour configurer les mappages de tables et de colonnes, les contraintes de clé étrangère, etc. Les fournisseurs sont généralement distribués sous la forme de packages NuGet.

Important

Quand une nouvelle version corrective d’EF Core est publiée, des mises à jour au package Microsoft.EntityFrameworkCore.Relational sont souvent incluses. Quand vous ajoutez un fournisseur de base de données relationnelle, ce package devient une dépendance transitive de votre application. Mais de nombreux fournisseurs sont publiés indépendamment d’EF et peuvent ne pas être mis à jour pour dépendre de la nouvelle version corrective de ce package. Pour que vous receviez tous les correctifs, nous vous recommandons d’ajouter la version corrective de Microsoft.EntityFrameworkCore.Relational comme dépendance directe de votre application.