EF コア .NET コマンド ライン ツールEF Core .NET Command-line Tools

Entity Framework Core .NET コマンド ライン ツールは、クロス プラットフォーム拡張機能dotnetコマンドでは、一部の.NET Core SDKです。The Entity Framework Core .NET Command-line Tools are an extension to the cross-platform dotnet command, which is part of the .NET Core SDK.


Visual Studio を使用するかどうか、ことをお勧めPMC ツールより統合されたエクスペリエンスを提供するために代わりにします。If you're using Visual Studio, we recommend the PMC Tools instead since they provide a more integrated experience.

ツールのインストールInstalling the tools


.NET Core SDK バージョン 2.1.300 おり、新しいdotnet ef EF コア 2.0 およびそれ以降のバージョンと互換性のあるコマンド。The .NET Core SDK version 2.1.300 and newer includes dotnet ef commands that are compatible with EF Core 2.0 and later versions. したがって最新バージョンの .NET Core SDK と EF Core ランタイムを使用している場合をインストールする必要はありませんし、このセクションの残りの部分を無視することができます。Therefore if you are using recent versions of the .NET Core SDK and the EF Core runtime, no installation is required and you can ignore the rest of this section.

その一方で、 dotnet efツール .NET Core SDK バージョン 2.1.300 に含まれていると、それ以降は EF コア バージョン 1.0 および 1.1 と互換性がありません。On the other hand, the dotnet ef tool contained in .NET Core SDK version 2.1.300 and newer is not compatible with EF Core version 1.0 and 1.1. .NET Core SDK 2.1.300 をあるコンピューター上で以前のバージョンの EF コアを使用するプロジェクトで作業することができます以降がインストールされて、前にバージョン 2.1.200 もインストールする必要がありますまたは SDK の古い変更してその古いバージョンを使用するアプリケーションを構成して、 global.jsonファイル。Before you can work with a project that uses these earlier versions of EF Core on a computer that has .NET Core SDK 2.1.300 or newer installed, you must also install version 2.1.200 or older of the SDK and configure the application to use that older version by modifying its global.json file. このファイルは、(プロジェクトの上に 1 つ) のソリューション ディレクトリに通常含まれます。This file is normally included in the solution directory (one above the project). 下の installlation 命令で開始できます。Then you can proceed with the installlation instruction below.

以前のバージョンの .NET Core SDK では、次の手順を使用して EF コア .NET コマンド ライン ツールをインストールすることができます。For previous versions of the .NET Core SDK, you can install the EF Core .NET Command-line Tools using these steps:

  1. プロジェクト ファイルを編集し、DotNetCliToolReference 項目 (下記参照) として Microsoft.EntityFrameworkCore.Tools.DotNet を追加Edit the project file and add Microsoft.EntityFrameworkCore.Tools.DotNet as a DotNetCliToolReference item (See below)

  2. 次のコマンドを実行します。Run the following commands:

    dotnet add package Microsoft.EntityFrameworkCore.Design
    dotnet restore

作成されたプロジェクトは、次のようになります。The resulting project should look something like this:

<Project Sdk="Microsoft.NET.Sdk">
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design"
                      PrivateAssets="All" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet"
                            Version="2.0.0" />


パッケージの参照をPrivateAssets="All"開発時にのみ使用される通常パッケージに特に便利ですが、このプロジェクトを参照しているプロジェクトに公開されていないことを意味します。A package reference with PrivateAssets="All" means it isn't exposed to projects that reference this project, which is especially useful for packages that are typically only used during development.

すべての権利を行った場合は、コマンド プロンプトで次のコマンドを正常に実行することができます。If you did everything right, you should be able to successfully run the following command in a command prompt.

dotnet ef

ツールを使用します。Using the tools

コマンドを呼び出すときに 2 つのプロジェクト。Whenever you invoke a command, there are two projects involved:

ターゲット プロジェクトでは、ファイルが追加されます (削除される場合もあります)。The target project is where any files are added (or in some cases removed). ターゲット プロジェクトが、現在のディレクトリで、プロジェクトの既定値を使用して変更することが、 --プロジェクトオプション。The target project defaults to the project in the current directory, but can be changed using the --project option.

スタートアップ プロジェクトは、プロジェクトのコードを実行したとき、ツールによってエミュレートされるプロジェクトです。The startup project is the one emulated by the tools when executing your project's code. また、現在のディレクトリで、プロジェクトの既定値を使用して変更することができます、 --スタートアップ プロジェクトオプション。It also defaults to the project in the current directory, but can be changed using the --startup-project option.


たとえば、次のようなりますを別のプロジェクトにインストールされている EF コアを持つ web アプリケーションのデータベースを更新しますdotnet ef database update --project {project-path}(からの web アプリのディレクトリ)。For instance, updating the database of your web application that has EF Core installed in a different project would look like this: dotnet ef database update --project {project-path} (from your web app directory)

一般的なオプション:Common options:

--json--json JSON の出力を表示します。Show JSON output.
-c-c --context <DBCONTEXT>--context <DBCONTEXT> 使用する DbContext です。The DbContext to use.
-p-p --project <PROJECT>--project <PROJECT> 使用するプロジェクトです。The project to use.
-s-s --startup-project <PROJECT>--startup-project <PROJECT> 使用するスタートアップ プロジェクトです。The startup project to use.
--framework <FRAMEWORK >--framework <FRAMEWORK> ターゲット フレームワーク。The target framework.
--構成<構成 >--configuration <CONFIGURATION> 使用する構成。The configuration to use.
--ランタイム<識別子 >--runtime <IDENTIFIER> 使用するランタイム。The runtime to use.
-h-h -ヘルプ--help ヘルプ情報を表示します。Show help information.
-v-v -詳細--verbose 詳細出力を表示します。Show verbose output.
--no-color--no-color しないと、出力が色分けして表示します。Don't colorize output.
--prefix-output--prefix-output 出力レベルをプレフィックスします。Prefix output with level.


ASP.NET Core 環境を指定するには、設定、 ASPNETCORE_ENVIRONMENT実行する前に環境変数。To specify the ASP.NET Core environment, set the ASPNETCORE_ENVIRONMENT environment variable before running.


dotnet ef データベースの削除dotnet ef database drop

データベースを削除します。Drops the database.


-f-f --強制--force しないことを確認します。Don't confirm.
--予行--dry-run データベースは削除しますが、それを削除しないを表示します。Show which database would be dropped, but don't drop it.

dotnet ef データベースの更新dotnet ef database update

指定された移行するには、データベースを更新します。Updates the database to a specified migration.


<移行 ><MIGRATION> Target の移行。The target migration. 0 の場合、すべての移行は元に戻せません。If 0, all migrations will be reverted. 既定値は最後に移行します。Defaults to the last migration.

dotnet ef dbcontext 情報dotnet ef dbcontext info

DbContext 型に関する情報を取得します。Gets information about a DbContext type.

dotnet ef dbcontext 一覧dotnet ef dbcontext list

使用可能な DbContext 型を一覧表示します。Lists available DbContext types.

dotnet ef dbcontext scaffolddotnet ef dbcontext scaffold

スキャフォールディング データベースの DbContext とエンティティの型。Scaffolds a DbContext and entity types for a database.


<接続 ><CONNECTION> データベースへの接続文字列。The connection string to the database.
<プロバイダー ><PROVIDER> 使用するプロバイダー。The provider to use. (たとえば、Microsoft.EntityFrameworkCore.SqlServer)(for example, Microsoft.EntityFrameworkCore.SqlServer)


-d-d -データ注釈--data-annotations 属性を使用すると、(可能な場合)、モデルを構成できます。Use attributes to configure the model (where possible). 省略すると、fluent API のみが使用されます。If omitted, only the fluent API is used.
-c-c --context <NAME>--context <NAME> DbContext の名前。The name of the DbContext.
--コンテキスト dir<パス >--context-dir <PATH> DbContext ファイルを配置するディレクトリ。The directory to put DbContext file in. パスでは、プロジェクト ディレクトリに対して相対的です。Paths are relative to the project directory.
-f-f --強制--force 既存のファイルを上書きします。Overwrite existing files.
-o-o --output-dir <PATH>--output-dir <PATH> ファイルを置くディレクトリです。The directory to put files in. パスでは、プロジェクト ディレクトリに対して相対的です。Paths are relative to the project directory.
-スキーマ<SCHEMA_NAME >.--schema <SCHEMA_NAME>... エンティティ型を生成するテーブルのスキーマです。The schemas of tables to generate entity types for.
-t-t -テーブル<TABLE_NAME >.--table <TABLE_NAME>... エンティティ型を生成するテーブル。The tables to generate entity types for.
--use-database-names--use-database-names データベースから直接テーブルおよび列名を使用します。Use table and column names directly from the database.

dotnet ef 移行を追加します。dotnet ef migrations add

新しい移行を追加します。Adds a new migration.


<NAME><NAME> 移行の名前。The name of the migration.


-o-o --output-dir <PATH>--output-dir <PATH> ディレクトリ (およびサブ名前空間) を使用します。The directory (and sub-namespace) to use. パスでは、プロジェクト ディレクトリに対して相対的です。Paths are relative to the project directory. 既定値は「移行」です。Defaults to "Migrations".

dotnet ef 移行リストdotnet ef migrations list

使用可能な移行を一覧表示します。Lists available migrations.

dotnet ef 移行を削除します。dotnet ef migrations remove

前回の移行を削除します。Removes the last migration.


-f-f --強制--force それがデータベースに適用された場合は、移行を戻します。Revert the migration if it has been applied to the database.

dotnet ef 移行スクリプトdotnet ef migrations script

移行からの SQL スクリプトを生成します。Generates a SQL script from migrations.


<FROM><FROM> 開始の移行。The starting migration. 既定値は 0 (最初のデータベース)。Defaults to 0 (the initial database).
<TO><TO> 終了の移行。The ending migration. 既定値は最後に移行します。Defaults to the last migration.


-o-o --出力<ファイル >--output <FILE> 結果を書き込むファイルです。The file to write the result to.
-i-i --idempotent--idempotent すべての移行でのデータベースで使用できるスクリプトを生成します。Generate a script that can be used on a database at any migration.