当您在 EF code-first 中设置 one:many 关系时,您可以选择它是否应该级联删除,如下所示:

modelBuilder.Entity<Assessment>()
    .HasRequired(asmt => asmt.CreatedByUser)
    .WithMany(usr => usr.Assessments)
    .HasForeignKey(asmt => asmt.CreatedByUserId)
    .WillCascadeOnDelete(true);

这转换为外键定义的 SQL ON DELETE CASCADE 部分,即。
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() 的东西。为什么不?

最佳答案

Entity Framework 通过导航属性处理关系,因此 ON UPDATE CASCADE 已为所有此类关系打开。

嗯,另一方面,我不确定您是否可以直接从 Entity Framework 更改实体的主键。

关于c# - 为什么没有相当于 WillCascadeOnDelete 的更新?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13706286/

10-09 18:20