【发布时间】:2011-10-01 10:57:27
【问题描述】:
我有三个表 - 上下文、会话和用户。以下是它们的简化结构。
用户:
用户 ID(整数,PK)
电子邮件 (Varchar(100))
背景:
ContextId (Int, PK)
UserId(来自用户表的 Int、FK)
CurrentSessionId(来自 Session 表的 Int、Nullable、FK)
会话:
SessionId (Int, PK)
UserId(来自用户表的 Int、FK)
ContextId (Int, FK from Context table)
以下是我的代码中删除用户实体的顺序。
1) 将 Context 表的 CurrentSessionId 更新为 null 其中 UserId = UserId 被删除。
2)删除User对应的所有Session
3) 删除User对应的所有Context
4) 最后删除用户。
5) 调用 ObjectContext.SaveChanges()
在调用 ObjectContext.SaveChanges() 时出现以下异常 -
无法确定相关操作的有效顺序。由于外键约束、模型要求或存储生成的值,可能存在依赖关系。
我猜 EF4 在确定前 3 个语句的执行顺序时会感到困惑。 是否可以告诉 EF4 先执行什么语句,接下来执行什么?
我可以解决的一种方法是在第一步之后调用 SaveChanges(),然后在第四步之后再次调用它。但我很想知道除此之外是否还有其他优雅的解决方案。
【问题讨论】:
标签: entity-framework entity-framework-4 entity-relationship