Entity Framework Core Tool について
概要
主に移行の管理と、DbContext およびエンティティ型のスキャフォールディング (データベースのスキーマをリバース エンジニアリングする) に使用されます。
※VisualStudio ではパッケージマネージャコンソール(PMC)から実行できるが、今後を考えて、.NET Core CLI を学ぶ。
動作確認環境
- EF Core 8.0
- PowerShell ver 5.1
Entity Framework Core ツール(.NET Core CLI)
参考サイト
- Entity Framework Core ツールのリファレンス - .NET Core CLI
https://learn.microsoft.com/ja-jp/ef/core/cli/dotnet
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