c# - 为什么没有更新相当于 WillCascadeOnDelete?

标签 c# .net entity-framework ef-code-first

当您在 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/

相关文章:

c# - 如何找到反向也是子序列的最长连续子序列

.net - 样式不适用于 Win7 x32 (.Net 4.0)

asp.net-mvc - ASP.net MVC 4,连接字符串

c# - ItemGridView ItemClick on Windows Store App

c# - Entity Framework 为映射到 View 的实体生成的 SQL

c# - 在 C# 中,显示可缩放和平移视频的好方法是什么?

c# - 尝试激活 'Microsoft.AspNetCore.Identity.UserManager' 时无法解析类型 'WebShop.Controllers.User.UserController' 的服务

c# - DbContext 表映射

c# - 为什么在没有安装 VS.NET 的情况下 C# winforms 应用程序无法运行?

c# - Bot Framework V4 IActivityLogger