当您在 EF 代码优先中设置一个:多个关系时,您可以选择它是否应该像这样在删除时级联:
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/