最初にEntityFramework Coreデータベースを使用してモデルを作成しました EF Coreドキュメントで説明されているように
しかし、データベースが編集されたときにモデルを更新する方法がわかりません。
最初に-Force
オプションを追加して実行したコマンドを実行することにより、モデルの再足場を作成できます。その結果、指定されたフォルダーの内容が上書きされます。パッケージマネージャーコンソール EF Coreドキュメントの例 を使用すると、変更されたコマンドは次のようになります。
Scaffold-DbContext "Server=(localdb)\v11.0;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force
あるいは、 CLIコマンド を使用している場合、次のようになります。
dotnet ef dbcontext scaffold "Server=(localdb)\v11.0;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models -f
ただし、モデルとデータベーススキーマを相互に同期させるには、移行の使用を検討する必要があります。そのようにして、モデルに変更を加えてから、それらをデータベースに伝播します。
モデルを時々更新する場合は、プロセスを簡素化する便利な方法があります。
メニューに移動しますツール> 外部ツール、そして追加新しいメニューで、以下のエントリを入力します:
タイトル:
Update DbContext
コマンド:
dotnet.exe
引数:
ef dbcontext scaffold "your-connection-string" Microsoft.EntityFrameworkCore.SqlServer --output-dir=Models --force
初期ディレクトリ:
$(ProjectDir)
次に、オプションで「出力ウィンドウを使用」にチェックマークを付け、ApplyおよびOKを押します。
もう一度Toolsに移動すると、ボタンをクリックするだけで、この新しいメニューがそこにあり、再利用の準備ができているはずです!
移行を行う必要があります。スキャフォールドしないでください。さもないと、データ検証など、モデルで行われた作業が失われます。
dbcontext
クラスでカスタマイズしている場合E.g。LoggerFactory
を追加し、('Scaffold-DbContext "Server=(localdb)\v11.0;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Force')
を使用した後。このコマンドは、すべてのカスタマイズ変更が失われます。