Scaffold-DbContext を実行すると "The following file(s) already exist in directory" エラーが発生する
Scaffold-DbContext を実行すると "The following file(s) already exist in directory" エラーが発生する現象と対処法を紹介します。
現象の確認
Scaffold-DbContext を実行するとビルドの成功後に以下のエラーが表示されます。
エラーメッセージ
The following file(s) already exist in directory '(モデルの保存フォルダ)': [モデルのファイル名] Use the Force flag to overwrite these files.
原因
Scaffold-DbContextを2回目に実行すると上記エラーが発生します。これは、1回目で作成したファイルを上書き防止のためのエラーメッセージです。
対処法
データベースのテーブルの列や型を変更した場合に再度Scaffold-DbContextを実行して結果を保存する場合は
-force
コマンドを指定してScaffold-DbContextを実行します。
パッケージ マネージャー コンソール で
-force
オプションを追加した、次の書式でScaffold-DbContextコマンドを実行します。
Scaffold-DbContext '(データベースの接続文字列)' Microsoft.EntityFrameworkCore.SqlServer -force
または
Scaffold-DbContext '(データベースの接続文字列)' Microsoft.EntityFrameworkCore.SqlServer -OutputDir (モデルの保存先フォルダ) -force
エラーが発生せずに、DbContextの更新ができました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用