Scaffold-DbContext コマンドで生成されるコードの出力先をプロジェクトのサブディレクトリにしたい

Scaffold-DbContext コマンドで生成されるコードの出力先をプロジェクトのサブディレクトリにする設定を紹介します。

概要

Scaffold-DbContext コマンドで指定したデータベースのDbContextクラスとテーブル構造のオブジェクトのコードが生成されますが、 デフォルトの設定の場合、プロジェクトディレクトリの直下に配置されます。テーブル数が少ない場合は問題ないのですが、テーブル数が多いデータベースの場合、 大量のコードファイルがプロジェクトディレクトリの直下に配置され管理しづらいです。
この記事では、Scaffold-DbContext コマンドのOutputDirオプションを利用してで生成されるコードを指定したサブディレクトリに配置する手順を紹介します。

デフォルトの動作

Microsoft.EntityFrameworkCore.Design パッケージと、Microsoft.EntityFrameworkCore.Toolsパッケージをインストールします。
プロジェクトを作成し、NuGetパッケージマネージャーコンソールを開き次のコマンドを実行します。
Scaffold-DbContext '(データベースの接続文字列)' Microsoft.EntityFrameworkCore.SqlServer
Scaffold-DbContext コマンドで生成されるコードの出力先をプロジェクトのサブディレクトリにしたい:画像1

実行すると、データベースの内容からDbContextとテーブル構造のオブジェクトのコードが生成されます。
Scaffold-DbContext コマンドで生成されるコードの出力先をプロジェクトのサブディレクトリにしたい:画像2

生成されたコードはプロジェクトディレクトリの直下に配置されるため、プログラムのコードとデータベースモデルのコードが混ざってしまい、管理が大変になります。
Scaffold-DbContext コマンドで生成されるコードの出力先をプロジェクトのサブディレクトリにしたい:画像3

Scaffold-DbContext コマンドの出力を指定したディレクトリに出力する

Scaffold-DbContext コマンドで生成されるコードを指定したディレクトリに出力する場合は、-OutputDir オプションを指定します。
次のコマンドを実行します。
Scaffold-DbContext '(データベースの接続文字列)' Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

-OutputDir Models を指定することで、生成されたコードをプロジェクトディレクトリの"Models"サブディレクトリに出力します。
Scaffold-DbContext コマンドで生成されるコードの出力先をプロジェクトのサブディレクトリにしたい:画像4

コマンドを実行すると、ソリューションエクスプローラーのプロジェクトの中に "Models"ディレクトリが作成されます。
Scaffold-DbContext コマンドで生成されるコードの出力先をプロジェクトのサブディレクトリにしたい:画像5

Scaffold-DbContext コマンドで生成されるコードの出力先をプロジェクトのサブディレクトリにしたい:画像6

Models ディレクトリのノードを展開すると、Scaffold-DbContext コマンドで生成されたコードが配置されていることが確認できます。
Scaffold-DbContext コマンドで生成されるコードの出力先をプロジェクトのサブディレクトリにしたい:画像7

Scaffold-DbContext の生成ファイルをプロジェクトのサブディレクトリに配置することができました。
AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2022-11-25
Copyright © 1995–2025 iPentec all rights reserverd.