我有三个表 - 上下文、 session 和用户。以下是它们的简化结构。
用户:
UserId (Int, PK)
电子邮件 (Varchar(100))
上下文:
ContextId (Int, PK)
UserId(Int,FK 来自 User 表)
CurrentSessionId(Int,Nullable,来自 Session 表的 FK)
session :
SessionId (Int, PK)
UserId(Int,FK 来自 User 表)
ContextId(Int,来自上下文表的 FK)
下面是我的代码中删除用户实体的序列。
1) 将Context表的CurrentSessionId更新为null,其中UserId = UserId要删除。
2)删除User对应的所有Session
3)删除User对应的所有Context
4) 最后删除用户。
5) 调用 ObjectContext.SaveChanges()
调用 ObjectContext.SaveChanges() 时出现以下异常 -
无法确定相关操作的有效顺序。由于外键约束、模型要求或存储生成的值,可能存在依赖关系。
我猜 EF4 在确定前 3 个语句的执行顺序时感到困惑。 是否可以告诉 EF4 先执行什么语句,然后执行什么语句?
我可以解决的一种方法是在第一步之后调用 SaveChanges(),然后在第四步之后再次调用它。但我很想知道是否还有其他优雅的解决方案。
最佳答案
基于 this MSDN link在 EF4 中不能强制执行顺序。我不得不在第一步之后调用 SaveChanges() 两次,然后在第四步之后再次调用。
关于entity-framework - EF4 - 强制执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6627890/