我手动删除多对多实体的关系数据,并保存所有更改。我可以离开我的页面,然后回来做一个级联删除没有问题,但如果我删除关系数据后立即执行级联删除,我得到错误:
System.InvalidOperationException:操作失败:无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。
任何人都知道为什么会这样吗?
答案 0 :(得分:0)
在为Entity Framework创建模型时使用WillCascadeOnDelete。例如:
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Proposal>()
.HasMany(Proposal=> proposal.Responses)
.WithRequired(response => response.Proposal)
.HasForeignKey(response => response.ProposalId)
.WillCascadeOnDelete(true);
}
}
现在您可以使用OBject.Remove(datatoremove);
进行删除操作。 CascadeonDelete需要Fluent API。