データベース プロバイダーDatabase Providers

Entity Framework Core は、データベース プロバイダーと呼ばれるプラグイン ライブラリを通じて多数の異なるデータベースにアクセスできます。Entity Framework Core can access many different databases through plug-in libraries called database providers.

現在のプロバイダーCurrent providers

重要

EF Core プロバイダーは、さまざまなソースによってビルドされます。EF Core providers are built by a variety of sources. 一部のプロバイダーは、Entity Framework Core プロジェクトの一部として保守管理されていません。Not all providers are maintained as part of the Entity Framework Core Project. プロバイダーの利用を検討するとき、要件に合うよう、品質、使用許諾、サポートなどを必ず評価してください。When considering a provider, be sure to evaluate quality, licensing, support, etc. to ensure they meet your requirements. また、バージョンの互換性情報の詳細について、各プロバイダーのドキュメントを確認してください。Also make sure you review each provider's documentation for detailed version compatibility information.

重要

通常、EF Core プロバイダーはマイナー バージョン間では動作しますが、メジャー バージョン間では動作しません。EF Core providers typically work across minor versions, but not across major versions. たとえば、EF Core 2.1 用にリリースされたプロバイダーは EF Core 2.2 では動作しますが、EF Core 3.0 では動作しません。For example, a provider released for EF Core 2.1 should work with EF Core 2.2, but will not work with EF Core 3.0.

NuGet パッケージNuGet Package サポートされているデータベース エンジンSupported database engines メンテナンス/仕入先Maintainer / Vendor メモ/要件Notes / Requirements ビルドの対象バージョンBuilt for version 役に立つリンクUseful links
Microsoft.EntityFrameworkCore.SqlServerMicrosoft.EntityFrameworkCore.SqlServer SQL Server 2012 以降SQL Server 2012 onwards EF Core プロジェクト (Microsoft)EF Core Project (Microsoft) 3.13.1 docsdocs
Microsoft.EntityFrameworkCore.SqliteMicrosoft.EntityFrameworkCore.Sqlite SQLite 3.7 以降SQLite 3.7 onwards EF Core プロジェクト (Microsoft)EF Core Project (Microsoft) 3.13.1 docsdocs
Microsoft.EntityFrameworkCore.InMemoryMicrosoft.EntityFrameworkCore.InMemory EF Core In-Memory データベースEF Core in-memory database EF Core プロジェクト (Microsoft)EF Core Project (Microsoft) 制限事項Limitations 3.13.1 docsdocs
Microsoft.EntityFrameworkCore.CosmosMicrosoft.EntityFrameworkCore.Cosmos Azure Cosmos DB SQL APIAzure Cosmos DB SQL API EF Core プロジェクト (Microsoft)EF Core Project (Microsoft) 3.13.1 docsdocs
Npgsql.EntityFrameworkCore.PostgreSQLNpgsql.EntityFrameworkCore.PostgreSQL PostgreSQLPostgreSQL Npgsql 開発チームNpgsql Development Team 3.13.1 docsdocs
Pomelo.EntityFrameworkCore.MySqlPomelo.EntityFrameworkCore.MySql MySQL、MariaDBMySQL, MariaDB Pomelo Foundation プロジェクトPomelo Foundation Project 3.13.1 readmereadme
Devart.Data.MySql.EFCoreDevart.Data.MySql.EFCore MySQL 5 以降MySQL 5 onwards DevArtDevArt 支払い済みPaid 3.03.0 docsdocs
Devart.Data.Oracle.EFCoreDevart.Data.Oracle.EFCore Oracle DB 9.2.0.4 以降Oracle DB 9.2.0.4 onwards DevArtDevArt 支払い済みPaid 3.03.0 docsdocs
Devart.Data.PostgreSql.EFCoreDevart.Data.PostgreSql.EFCore PostgreSQL 8.0 以降PostgreSQL 8.0 onwards DevArtDevArt 支払い済みPaid 3.03.0 docsdocs
Devart.Data.SQLite.EFCoreDevart.Data.SQLite.EFCore SQLite 3 以降SQLite 3 onwards DevArtDevArt 支払い済みPaid 3.03.0 docsdocs
FileContextCoreFileContextCore ファイルにデータを格納Stores data in files Morris JanatzekMorris Janatzek 開発用For development purposes 3.03.0 readmereadme
EntityFrameworkCore.JetEntityFrameworkCore.Jet Microsoft Access ファイルMicrosoft Access files BubiBubi .NET Framework.NET Framework 2.22.2 readmereadme
EntityFrameworkCore.SqlServerCompact35EntityFrameworkCore.SqlServerCompact35 SQL Server Compact 3.5SQL Server Compact 3.5 Erik Ejlskov JensenErik Ejlskov Jensen .NET Framework.NET Framework 2.22.2 wikiwiki
EntityFrameworkCore.SqlServerCompact40EntityFrameworkCore.SqlServerCompact40 SQL Server Compact 4.0SQL Server Compact 4.0 Erik Ejlskov JensenErik Ejlskov Jensen .NET Framework.NET Framework 2.22.2 wikiwiki
FirebirdSql.EntityFrameworkCore.FirebirdFirebirdSql.EntityFrameworkCore.Firebird Firebird 2.5 および 3.xFirebird 2.5 and 3.x Jiří ČinčuraJiří Činčura 2.22.2 docsdocs
Teradata.EntityFrameworkCoreTeradata.EntityFrameworkCore Teradata データベース 16.10 以上Teradata Database 16.10 onwards TeradataTeradata プレリリースPrerelease 2.22.2 Web サイトwebsite
EntityFrameworkCore.FirebirdSqlEntityFrameworkCore.FirebirdSql Firebird 2.5 および 3.xFirebird 2.5 and 3.x Rafael AlmeidaRafael Almeida 2.12.1 wikiwiki
EntityFrameworkCore.OpenEdgeEntityFrameworkCore.OpenEdge Progress OpenEdgeProgress OpenEdge Alex WieseAlex Wiese 2.12.1 readmereadme
MySql.Data.EntityFrameworkCoreMySql.Data.EntityFrameworkCore MySQLMySQL MySQL プロジェクト(Oracle)MySQL project (Oracle) 2.12.1 docsdocs
Oracle.EntityFrameworkCoreOracle.EntityFrameworkCore Oracle DB 11.2 以降Oracle DB 11.2 onwards OracleOracle 2.12.1 Web サイトwebsite
IBM.EntityFrameworkCoreIBM.EntityFrameworkCore Db2、InformixDb2, Informix IBMIBM Windows のバージョンWindows version 2.02.0 ブログblog
IBM.EntityFrameworkCore-lnxIBM.EntityFrameworkCore-lnx Db2、InformixDb2, Informix IBMIBM Linux バージョンLinux version 2.02.0 ブログblog
IBM.EntityFrameworkCore-osxIBM.EntityFrameworkCore-osx Db2、InformixDb2, Informix IBMIBM macOS バージョンmacOS version 2.02.0 ブログblog
Pomelo.EntityFrameworkCore.MyCatPomelo.EntityFrameworkCore.MyCat MyCAT ServerMyCAT Server Pomelo Foundation プロジェクトPomelo Foundation Project プレリリースのみPrerelease only 1.11.1 readmereadme

データベース プロバイダーをアプリケーションに追加するAdding a database provider to your application

EF Core のほとんどのデータベース プロバイダーは、NuGet パッケージとして配布され、次のようにインストールできます。Most database providers for EF Core are distributed as NuGet packages, and can be installed as follows:

dotnet add package provider_package_name

インストールされたら、DbContext で、OnConfiguring メソッド、または依存関係注入コンテナーを使用している場合は AddDbContext メソッドを使用してプロバイダーを構成します。Once installed, you will configure the provider in your DbContext, either in the OnConfiguring method or in the AddDbContext method if you are using a dependency injection container. たとえば、次の行は、渡された接続文字列を使用して、SQL Server プロバイダーを構成します。For example, the following line configures the SQL Server provider with the passed connection string:

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

データベース プロバイダーは、特定のデータベースに固有の機能を有効にするように EF Core を拡張できます。Database providers can extend EF Core to enable functionality unique to specific databases. いくつかの概念はほとんどのデータベースに共通しており、プライマリ EF Core コンポーネントに含まれています。Some concepts are common to most databases, and are included in the primary EF Core components. そのような概念には、LINQ のクエリの表現、トランザクション、データベースから読み込んだときのオブジェクトの変更追跡などがあります。Such concepts include expressing queries in LINQ, transactions, and tracking changes to objects once they are loaded from the database. いくつかの概念は、特定のプロバイダーに固有のものです。Some concepts are specific to a particular provider. たとえば、SQL Server プロバイダーの場合、メモリが最適化されたテーブル (SQL Server 固有の機能) を構成できますFor example, the SQL Server provider allows you to configure memory-optimized tables (a feature specific to SQL Server). その他の概念は、プロバイダーのクラスに固有のものです。Other concepts are specific to a class of providers. たとえば、リレーショナル データベースの EF Core プロバイダーの場合、一般的な Microsoft.EntityFrameworkCore.Relational ライブラリに基づいてビルドします。このライブラリは、テーブルと列のマッピングや外部キー制約などを構成するための API を提供します。プロバイダーは通常、NuGet パッケージとして配布されます。For example, EF Core providers for relational databases build on the common Microsoft.EntityFrameworkCore.Relational library, which provides APIs for configuring table and column mappings, foreign key constraints, etc. Providers are usually distributed as NuGet packages.

重要

EF Core の新しい修正プログラムのバージョンがリリースされるときには、多くの場合 Microsoft.EntityFrameworkCore.Relational パッケージの更新プログラムが含まれます。When a new patch version of EF Core is released, it often includes updates to the Microsoft.EntityFrameworkCore.Relational package. ユーザーがリレーショナル データベース プロバイダーを追加するとき、このパッケージは、アプリケーション依存関係が推移的になります。When you add a relational database provider, this package becomes a transitive dependency of your application. しかし、多くのプロバイダーが EF Core から独立してリリースされ、そのパッケージの新しい修正プログラムのバージョンに依存するように更新されないことがあります。But many providers are released independently from EF Core and may not be updated to depend on the newer patch version of that package. すべてのバグ修正が確実に取得されるようにするために、Microsoft.EntityFrameworkCore.Relational の修正プログラム バージョンをアプリケーションの直接の依存関係として追加することをお勧めします。In order to make sure you will get all bug fixes, it is recommended that you add the patch version of Microsoft.EntityFrameworkCore.Relational as a direct dependency of your application.