データベース プロバイダー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.

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

将来のプロバイダーFuture Providers

Cosmos DBCosmos DB

Cosmos DB の SQL API 向けの EF Core プロバイダーを開発しています。We have been developing an EF Core provider for the SQL API in Cosmos DB. これは弊社が生成した最初の完全なドキュメント指向データベース プロバイダーであり、この演習から学んだ内容は、EF Core の今後のリリースや、場合によっては関連のない他のプロバイダーの設計の改善のために通知されます。This will be the first complete document-oriented database provider we have produced, and the learnings from this exercise are going to inform improvements in the design of future releases of EF Core and possibly other non-relational providers. プレビューは NuGet ギャラリーで入手できます。A preview is available on the NuGet Gallery.

Oracle のファースト パーティ プロバイダーOracle first-party provider

Oracle .NET チームは、EF Core 用 Oracle プロバイダーのベータ版を公開しています。The Oracle .NET team has published the beta of the Oracle provider for EF Core. リリース時期も含め、このプロバイダーに関するご質問は Oracle コミュニティ サイトに直接お寄せください。Please direct any questions about this provider, including the release timeline, to the Oracle Community Site.

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

EF Core のほとんどのデータベース プロバイダーは、NuGet パッケージとして配布されます。Most database providers for EF Core are distributed as NuGet packages. つまり、コマンド ラインで dotnet ツールを使用してそれらをインストールできます。This means they can be installed using the dotnet tool in the command line:

dotnet add package provider_package_name

あるいは、Visual Studio で NuGet のパッケージ マネージャー コンソールを使用する場合、次のようになります。Or in Visual Studio, using NuGet's Package Manager Console:

install-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.