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

Entity Framework Core は、データベース プロバイダーと呼ばれるプラグイン ライブラリを通じて多数の異なるデータベースにアクセスできます。

現在のプロバイダー

重要

EF Core プロバイダーは、さまざまなソースによってビルドされます。 一部のプロバイダーは、Entity Framework Core プロジェクトの一部として保守管理されていません。 プロバイダーの利用を検討するとき、要件に合うよう、品質、使用許諾、サポートなどを必ず評価してください。 また、バージョンの互換性情報の詳細について、各プロバイダーのドキュメントを確認してください。

重要

EF Core プロバイダーは、通常、メジャー バージョン間では機能しません。 たとえば、EF Core 6 用にリリースされたプロバイダーは、EF Core 7 では動作しません。

NuGet パッケージ サポートされているデータベース エンジン メンテナンス/仕入先 メモ/要件 対象の EF Core 便利なリンク
Microsoft.EntityFrameworkCore.SqlServer SQL Server 2012 以降 EF Core プロジェクト (Microsoft) 6、7 docs
Microsoft.EntityFrameworkCore.Sqlite SQLite 3.7 以降 EF Core プロジェクト (Microsoft) 6、7 docs
Microsoft.EntityFrameworkCore.InMemory EF Core In-Memory データベース EF Core プロジェクト (Microsoft) 制限事項 6、7 docs
Microsoft.EntityFrameworkCore.Cosmos Azure Cosmos DB SQL API EF Core プロジェクト (Microsoft) 6、7 docs
Npgsql.EntityFrameworkCore.PostgreSQL PostgreSQL Npgsql 開発チーム 6、7 docs
Pomelo.EntityFrameworkCore.MySql MySQL、MariaDB Pomelo Foundation プロジェクト 6、7 readme
MySql.EntityFrameworkCore MySQL MySQL プロジェクト(Oracle) 6、7 docs
Oracle.EntityFrameworkCore Oracle DB 11.2 以降 Oracle 6 Web サイト
Devart.Data.MySql.EFCore MySQL 5 以降 DevArt 有料 6 docs
Devart.Data.Oracle.EFCore Oracle DB 9.2.0.4 以降 DevArt 有料 6 docs
Devart.Data.PostgreSql.EFCore PostgreSQL 8.0 以降 DevArt 有料 6 docs
Devart.Data.SQLite.EFCore SQLite 3 以降 DevArt 有料 6 docs
FirebirdSql.EntityFrameworkCore.Firebird Firebird 3.0 以降 Jiří Činčura 6 docs
IBM.EntityFrameworkCore Db2、Informix IBM 支払い済み、Windows 6 概要
IBM.EntityFrameworkCore-lnx Db2、Informix IBM 支払い済み、Linux 6 概要
IBM.EntityFrameworkCore-osx Db2、Informix IBM 支払い済み、macOS 6 概要
EntityFrameworkCore.Jet Microsoft Access ファイル Bubi 6 readme
Google.Cloud.EntityFrameworkCore.Spanner Google Cloud Spanner Cloud Spanner のエコシステム 現在プレビュー中 6 チュートリアル
Teradata.EntityFrameworkCore Teradata データベース 16.10 以上 Teradata 3 Web サイト
FileContextCore ファイルにデータを格納 Morris Janatzek 開発用 3 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

データベース プロバイダーをアプリケーションに追加する

EF Core のほとんどのデータベース プロバイダーは、NuGet パッケージとして配布され、次のようにインストールできます。

dotnet add package provider_package_name

インストールされたら、DbContext で、OnConfiguring メソッド、または依存関係注入コンテナーを使用している場合は AddDbContext メソッドを使用してプロバイダーを構成します。 たとえば、次の行は、渡された接続文字列を使用して、SQL Server プロバイダーを構成します。

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

データベース プロバイダーは、特定のデータベースに固有の機能を有効にするように EF Core を拡張できます。 いくつかの概念はほとんどのデータベースに共通しており、プライマリ EF Core コンポーネントに含まれています。 そのような概念には、LINQ のクエリの表現、トランザクション、データベースから読み込んだときのオブジェクトの変更追跡などがあります。 いくつかの概念は、特定のプロバイダーに固有のものです。 たとえば、SQL Server プロバイダーの場合、メモリが最適化されたテーブル (SQL Server 固有の機能) を構成できます。 その他の概念は、プロバイダーのクラスに固有のものです。 たとえば、リレーショナル データベースの EF Core プロバイダーの場合、一般的な Microsoft.EntityFrameworkCore.Relational ライブラリに基づいてビルドします。このライブラリは、テーブルと列のマッピングや外部キー制約などを構成するための API を提供します。プロバイダーは通常、NuGet パッケージとして配布されます。

重要

EF Core の新しい修正プログラムのバージョンがリリースされるときには、多くの場合 Microsoft.EntityFrameworkCore.Relational パッケージの更新プログラムが含まれます。 ユーザーがリレーショナル データベース プロバイダーを追加するとき、このパッケージは、アプリケーション依存関係が推移的になります。 しかし、多くのプロバイダーが EF Core から独立してリリースされ、そのパッケージの新しい修正プログラムのバージョンに依存するように更新されないことがあります。 すべてのバグ修正が確実に取得されるようにするために、Microsoft.EntityFrameworkCore.Relational の修正プログラム バージョンをアプリケーションの直接の依存関係として追加することをお勧めします。