您好我正在使用EF 4自我跟踪实体。我有三个表格(问卷,部分和页面)如下:删除时EF4循环引用问题
Questionnaire
Id
Title
WhenClosedShowPageId
Section
Id
QuestionnaireId
Page
Id
SectionId
因此,在EF模型问卷中有章节和章节有页。 WhenClosedShowPageId是一个可为空的int,它引用页面以显示调查问卷关闭时的情况。所有参考文献都有关联以保持参照完整性。
当我将所有实体标记为已删除并尝试保存时,问题就出现了。如果当我检索数据时,WhenClosedShowPageId为空,那么删除工作正常。如果将WhenClosedShowPageId设置为一个值,则EF无法确定要删除的顺序。这是可以理解的。但是,如果我将WhenClosedShowPageId设置为null,则将实体标记为已删除并保存,同样的事情发生。我希望EF首先生成一条更新语句,将数据库中的WhenClosedShowPageId设置为null,然后再删除实体。
我可以看到解决这个问题的唯一方法是自己做两次独立保存,第一次将WhenClosedShowPageId设置为null,第二次删除实体。这是一个非常分层的应用程序,但我不想为此创建特殊情况。
有没有办法解决这个问题?如果实体已被标记为删除
达伦