EF Core の NuGet パッケージ

Entity Framework Core (EF Core) は NuGet パッケージとして出荷されます。 アプリケーションで必要なパッケージは、次のものに依存します。

  • 使用されているデータベース システムの種類 (SQL Server、SQLite など)
  • 必要とする EF Core 機能

パッケージをインストールするための通常のプロセスは次のとおりです。

  • データベース プロバイダーを決定し、適切なパッケージをインストールします (下記参照)
  • また、リレーショナル データベース プロバイダーを使用している場合は、Microsoft.EntityFrameworkCore および Microsoft.EntityFrameworkCore.Relational をインストールします。 これにより、一貫性のあるバージョンが確実に使用されるようになります。また、新しいパッケージ バージョンが出荷される時期が、NuGet によって通知されるようになります。
  • 必要に応じて、必要としているツールの種類を決定し、それに適したパッケージをインストールします (下記参照)

EF Core の概要については、Entity Framework Core の概要チュートリアルに関するページを参照してください。

パッケージのバージョン

必ず、Microsoft から出荷されたすべての EF Core パッケージの同じバージョンをインストールしてください。 たとえば、Microsoft.EntityFrameworkCore.SqlServer のバージョン 5.0.3 をインストールする場合は、他の Microsoft.EntityFrameworkCore.* パッケージもすべて 5.0.3 にする必要があります。

また、外部パッケージが、使用されている EF Core のバージョンと互換性があることを確認します。 特に、使用している EF Core のバージョンが外部データベース プロバイダーでサポートされていることを確認します。 EF Core の新しいメジャー バージョンには、通常、更新されたデータベース プロバイダーが必要です。

警告

NuGet によって、一貫性のあるパッケージ バージョンが適用されることはありません。 ご利用の .csproj ファイルまたは同等のファイル内で参照しているパッケージ バージョンを常に慎重にご確認ください。

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

EF Core では、"データベース プロバイダー" を使用することによって、さまざまなデータベース システムがサポートされています。 各システムには、NuGet パッケージとして出荷される独自のデータベース プロバイダーがあります。 アプリケーションでは、これらのプロバイダー パッケージの 1 つまたは複数をインストールする必要があります。

一般的なデータベース プロバイダーを次の表に示します。 使用可能なプロバイダーの全体の一覧については、「データベース プロバイダー」を参照してください。

データベース システム Package
SQL Server および SQL Azure Microsoft.EntityFrameworkCore.SqlServer
SQLite Microsoft.EntityFrameworkCore.Sqlite
Azure Cosmos DB Microsoft.EntityFrameworkCore.Cosmos
PostgreSQL Npgsql.EntityFrameworkCore.PostgreSQL*
MySQL Pomelo.EntityFrameworkCore.MySql*
EF Core のインメモリ データベース** Microsoft.EntityFrameworkCore.InMemory

*これらは、コミュニティによって開発および出荷された人気のある高品質のオープンソース プロバイダーです。 一覧されている他のプロバイダーは、Microsoft から出荷されています。

**インメモリ データベースを使用するかどうかは、慎重に検討してください。 これは運用環境で使用するように設計されたものではありません。また、テストに最適なソリューションではない場合もあります。

ツール

EF Core の移行および既存のデータベースからのリバース エンジニアリング (スキャフォールディング) にツールを使用するには、適切なツール パッケージをインストールする必要があります。

プロジェクトに、またはグローバルに dotnet-ef ツールを正しくインストールする方法など、EF Core ツールの使い方の詳細については、「Entity Framework Core ツールのリファレンス」を参照してください。

ヒント

既定では、Microsoft.EntityFrameworkCore.Design パッケージは、ご利用のアプリケーションと一緒に展開されないようにインストールされます。 これはまた、その型を他のプロジェクトで推移的に使用できないことを意味します。 このパッケージ内の型にアクセスする必要がある場合は、ご利用の .csproj ファイルまたは同等のファイル内で通常の PackageReference を使用します。 詳細については、「デザイン時サービス」を参照してください。

拡張機能パッケージ

Microsoft とサード パーティの両者が NuGet パッケージとして多数の EF Core の拡張機能を発行しています。 一般的に使用されるパッケージには次のものがあります。

機能 Package 追加の依存関係
遅延読み込みと変更追跡のためのプロキシ Microsoft.EntityFrameworkCore.Proxies Castle.Core
SQL Server の空間サポート Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite NetTopologySuite および NetTopologySuite.IO.SqlServerBytes
SQLite の空間サポート Microsoft.EntityFrameworkCore.Sqlite.NetTopologySuite NetTopologySuite および NetTopologySuite.IO.SpatiaLite
PostgreSQL の空間サポート Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite NetTopologySuiteNetTopologySuite.IO.PostGIS (Npgsql.NetTopologySuite を使用)
MySQL の空間サポート Pomelo.EntityFrameworkCore.MySql.NetTopologySuite NetTopologySuite

その他のパッケージ

その他の EF Core パッケージは、データベース プロバイダー パッケージの依存関係として取り込まれます。 ただし、新しいバージョンがリリースされたときに NuGet によって通知が提供されるように、これらのパッケージの明示的なパッケージ参照を追加することもできます。

機能 Package
EF Core の基本的な機能 Microsoft.EntityFrameworkCore
一般的なリレーショナル データベースの機能 Microsoft.EntityFrameworkCore.Relational
EF Core 属性用の簡易パッケージ (その他) Microsoft.EntityFrameworkCore.Abstractions
EF Core の使用状況の Roslyn コード アナライザー Microsoft.EntityFrameworkCore.Analyzers
ネイティブ SQLite 依存関係のない EF Core SQLite プロバイダー Microsoft.EntityFrameworkCore.Sqlite.Core

データベース プロバイダー テスト用のパッケージ

外部の GitHub リポジトリに構築されたデータベース プロバイダーをテストするには、次のパッケージを使用します。 例については、efcore.pg および Pomelo.EntityFrameworkCore.MySql に関するページを参照してください。 アプリケーションで、これらのパッケージをインストールしないでください。

機能 Package
任意のデータベース プロバイダーのテスト Microsoft.EntityFrameworkCore.Specification.Tests
リレーショナル データベース プロバイダーのテスト Microsoft.EntityFrameworkCore.Relational.Specification.Tests

古いパッケージ

次の古いパッケージはインストールしないでください。それらがご利用のプロジェクトに現在インストールされている場合は、削除してください。

  • Microsoft.EntityFrameworkCore.Relational.Design
  • Microsoft.EntityFrameworkCore.Tools.DotNet
  • Microsoft.EntityFrameworkCore.SqlServer.Design
  • Microsoft.EntityFrameworkCore.Sqlite.Design
  • Microsoft.EntityFrameworkCore.Relational.Design.Specification.Tests