实体框架核心-从父级删除子级条目会导致SaveChanges错误

Gra*_*son 5 ef-code-first asp.net-core

我收到以下错误“ 实体类型'Docket'和'DocketLine'之间的关联已切断,但该关系的外键不能设置为null。如果应删除从属实体,则将关系设置为使用级联删除。

之所以会出现问题,是因为我有一个Docket(header)而不是多个子项(DocketLines),并且我正在进行更新,在其中将新行添加到docket标头中,而我只是将那些新的DocketLines添加到Docket.DocketLines集合(工作正常)。但是,当我尝试使用Docket.DocketLines.Remove(deletedLine)从同一集合中删除DocketLine时,这将生成上面的错误消息。知道为什么吗?

最后,我不得不更改代码以直接从_context.DocketLines.Remove / RemoveRange(...)集合中删除行,并且此方法有效,但是我将新项目添加到chil集合中以插入它似乎很奇怪新的DocketLines,但无法从同一集合中删除项目以删除DocketLines

Bad*_*ake 5

在 DbContext/OnModelCreating 方法中,注释给您带来该问题的实体的 OnDelete 行为:

在此输入图像描述

这将使您避免这个问题。

  • 如果我从数据库中搭建脚手架,有什么方法可以避免生成此内容? (4认同)