EF コード ファーストで 1 対多の関係を設定する場合、次のように削除時にカスケードするかどうかを選択できます。
modelBuilder.Entity<Assessment>()
.HasRequired(asmt => asmt.CreatedByUser)
.WithMany(usr => usr.Assessments)
.HasForeignKey(asmt => asmt.CreatedByUserId)
.WillCascadeOnDelete(true);
ON DELETE CASCADE
これは、外部キー定義の SQL 部分に変換されます。
ALTER TABLE [dbo].[Assessment] WITH CHECK ADD CONSTRAINT [FK_dbo.Assessment_dbo.User_CreatedById] FOREIGN KEY([CreatedById])
REFERENCES [dbo].[User] ([UserId])
ON DELETE CASCADE
GO
ただし、Fluent API には、 の値を制御できる同様のメソッドはないようですON UPDATE CASCADE
。のようなもの.WillCascadeOnUpdate()
。なぜだめですか?