EF Core CLIについて

Entity Framework Core Tool について

概要

主に移行の管理と、DbContext およびエンティティ型のスキャフォールディング (データベースのスキーマをリバース エンジニアリングする) に使用されます。

※VisualStudio ではパッケージマネージャコンソール(PMC)から実行できるが、今後を考えて、.NET Core CLI を学ぶ。

動作確認環境

Entity Framework Core ツール(.NET Core CLI)

参考サイト

tool のインストール

次のコマンドでグローバルにツールをインストール。

dotnet tool install --globalk dotnet-ef

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#installing-the-tools

次のコマンドでツールを更新。

dotnet tool update --global dotnet-ef

ツールがプロジェクトにインストールされている場合はグローバルの指定(--global)を外します。
特定のバージョンの場合は --version を指定します。

dotnet tool update dotnet-df

特定のプロジェクトでツールを使用する前に、パッケージを追加する必要があります。

dotnet add package microsoft.entiryframeworkcore.design

インストールを検証

EF Core CLI ツールがインストールされていることを確認。

dotnet ef

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#verify-installation

コマンドの結果。

PS C:\...\EFGetStarted>dotnet ef

                     _/\__
               ---==/    \\
         ___  ___   |.    \|\
        | __|| __|  |  )   \\\
        | _| | _|   \_/ |  //|\\
        |___||_|       /   \\\/\\

Entity Framework Core .NET Command-line Tools 8.0.6

共通オプション

データベースの削除

dotnet ef database drop

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#dotnet-ef-database-drop

データベースの最後の移行または指定された移行に更新する。

dotnet ef database update

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#dotnet-ef-database-update

次の例では、データベース指定を指定した移行に更新。

# マイグレーションを指定した移行
dotnet ef database update 20240530_InitialCreate

# DB接続先をしてした移行
dotnet ef database update 20240606_additem --connection your_connection_string

DbContext 型に関する情報を取得

dotnet ef dbcontext info

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#dotnet-ef-dbcontext-info

使用可能な DbContext 型の一覧を表示

dotnet ef dbcontext list

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#dotnet-ef-dbcontext-list

DbContext で使用されるモデルのコンパイル済みのバージョンを生成

dotnet ef dbcontext optimize

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#dotnet-ef-dbcontext-optimize

詳細については、「コンパイル済みモデル」を参照してください。

DbContext のコードとデータベースのエンティティ型を生成

dotnet ef dbcontext scaffold

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#dotnet-ef-dbcontext-scaffold

このコマンドでエンティティ型を生成するには、データ テーブルに主キーが含まれている必要があります。

# 例1) すべてのスキーマとテーブルをスキャフォールディングし、新しいファイルを Models フォルダーに格納します
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models

# 例2) 選択したテーブルのみをスキャフォールディングし、指定した名前と名前空間を持つ個別のフォルダーにコンテキストを作成します
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models -t Blog -t Post --context-dir Context -c BlogContext --context-namespace New.Namespace

# 例3) OnConfiguring メソッドのスキャフォールディングをスキップします。 これは、クラスの外部で DbContext を構成する場合に便利です。
dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;User Id=myUsername;Password=myPassword;" Microsoft.EntityFrameworkCore.SqlServer --no-onconfiguring

新しい移行を追加します

dotnet ef migrations add

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#dotnet-ef-migrations-add

データベースを更新するための実行可能ファイルを作成

dotnet ef migrations bundle

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#dotnet-ef-migrations-bundle

前回の移行以降にモデルに変更が加えられたかどうかを確認

dotnet ef migrations has-pending-model-changes

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#dotnet-ef-migrations-has-pending-model-changes

使用可能な移行を一覧表示します

dotnet ef migrations list

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#dotnet-ef-migrations-list

最後の移行を削除して、最新の移行のために行われたコード変更をロールバックします

dotnet ef migrations remove

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#dotnet-ef-migrations-remove

移行から SQL スクリプトを生成します

dotnet ef migrations script

https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet#dotnet-ef-migrations-script