記事詳細
- 投稿日
- 2026年08月13日10時46分
-
タイトル
-
ASP.NET Core MVC: CreateTableのC#のコード内で、” ReferentialAction.NoAction);というコードの意味は?
- 内容
-
ReferentialAction.NoActionは、Entity Framework Core (EF Core) のマイグレーションで外部キー制約を作成するときに、参照先のデータが削除または更新された場合の動作を指定する列挙値です。意味
NoActionは 「何もしない」 という意味で、
外部キーの参照先(親テーブル)の行が削除または更新されても、EF Core 側では自動的に子テーブルのデータを変更・削除しません。ただし、実際にはデータベース側の外部キー制約が働くため、
親データを削除しようとすると、子データが残っている場合は エラー(制約違反) になります。例
マイグレーションコードの一部例:
他の
ReferentialActionとの違い値 動作 Cascade親が削除/更新されたら、子も自動的に削除/更新される SetNull親が削除/更新されたら、子の外部キーを NULLにするRestrict親に子が存在する場合、削除/更新を禁止( NoActionとほぼ同じだが、DBエンジンによって挙動が微妙に異なる)NoAction親削除/更新時に何もしない(ただし制約違反はDB側で発生) ✅ まとめ
ReferentialAction.NoActionは、親テーブルの変更時に子テーブルへ自動処理を行わない設定です。
実際にはデータベースの外部キー制約が残っているため、整合性が取れない操作はエラーになります。もし希望があれば、この
NoActionとRestrictのSQLレベルでの違いも図解付きで説明できますが、続けますか?
これを理解すると、EF Core のマイグレーション挙動がかなり明確になります。Powered by Froala Editor
-
添付画像
-
画像はありません
- Genreのカテゴリ-名
- Models