Entity framework 4 EF4删除时的循环引用问题

Entity framework 4 EF4删除时的循环引用问题,entity-framework-4,self-tracking-entities,Entity Framework 4,Self Tracking Entities,嗨,我正在使用EF 4自跟踪实体。我有以下三个表格(问卷、章节和页面) Questionnaire Id Title WhenClosedShowPageId Section Id QuestionnaireId Page Id SectionId 因此,在EF模型中,问卷有部分,部分有页面。WhenClosedShowPageId是一个可为空的int,它在问卷关闭时引用要显示的页面。所有引用都有关联以保持引用完整性 当我将所有实体标记为已删除并尝试保存时,问题就出现了。如果在检索数据时W

嗨,我正在使用EF 4自跟踪实体。我有以下三个表格(问卷、章节和页面)

Questionnaire
Id
Title
WhenClosedShowPageId

Section
Id
QuestionnaireId

Page
Id
SectionId
因此,在EF模型中,问卷有部分,部分有页面。WhenClosedShowPageId是一个可为空的int,它在问卷关闭时引用要显示的页面。所有引用都有关联以保持引用完整性

当我将所有实体标记为已删除并尝试保存时,问题就出现了。如果在检索数据时WhenClosedShowPageId为null,则删除操作正常。如果WhenClosedShowPageId设置为值,则EF无法计算删除的顺序。这是可以理解的。但是,如果我将WhenClosedShowPageId设置为null,将实体标记为已删除并保存,则会发生相同的情况。我希望EF首先生成一个update语句,将数据库上的WhenClosedShowPageId设置为null,然后再删除实体

我能看到的解决这个问题的唯一方法是自己进行两次独立保存,第一次是将WhenClosedShowPageId设置为null,第二次是删除实体。这是一个层次很深的应用程序,我不想仅仅为此创建一个特例

这有什么办法吗


Darren

如果实体被标记为删除,实体框架将放弃挂起的编辑。毕竟,如果要摆脱它,那么首先更新数据有什么意义呢?不幸的是,这可能导致你所看到的情况

解决此问题的最佳方法是,在nClosedShowPageID未级联删除时,使关联的两端都通过(
End1-OnDelete
End2-OnDelete
设置为
None
)。由于该页面是调查问卷的一部分,因此最终将被删除,因此您无需担心