您好我正在使用 EF 4 自我跟踪实体。我有如下三个表格(问卷、部分和页面);
Questionnaire
Id
Title
WhenClosedShowPageId
Section
Id
QuestionnaireId
Page
Id
SectionId
因此,在 EF 模型中,问卷调查有部分,部分有页面。WhenClosedShowPageId 是一个可以为空的 int,它引用页面以显示问卷何时关闭。所有引用都有关联以保持引用完整性。
当我将所有实体标记为已删除并尝试保存时,问题就来了。如果当我检索数据时WhenClosedShowPageId 为空,则删除工作正常。如果将 WhenClosedShowPageId 设置为一个值,则 EF 无法计算出删除的顺序。这是可以理解的。但是,如果我将 WhenClosedShowPageId 设置为 null,将实体标记为已删除并保存,则会发生同样的事情。我本来希望 EF 生成一个更新语句,首先将数据库上的 WhenClosedShowPageId 设置为 null,然后让它删除实体。
我能看到解决此问题的唯一方法是自己进行两次独立保存,第一次将 WhenClosedShowPageId 设置为 null,第二次删除实体。不过,这是一个高度分层的应用程序,我不想为此创建一个特殊情况。
有没有办法解决?
达伦