我有三个表格 - 上下文,会话和用户。以下是它们的简化结构。EF4 - 强制执行顺序
用户:
用户ID(中间体,PK)
电子邮件(VARCHAR(100))
上下文:
CONTEXTID(中间体,PK)
用户ID(中间体,FK从用户表)
CurrentSessionId(Int,Nullable,来自会话表的FK)
Session:周
的sessionID(中间体,PK)
用户ID(中间体,FK从用户表)
CONTEXTID(中间体,FK从上下文表)
下面是在我的代码删除用户实体的序列。
1)将Context table的CurrentSessionId更新为null,其中UserId = UserId将被删除。
2)删除用户对应的所有会话
3)删除用户对应的所有上下文
4)最后删除用户。
5)呼叫ObjectContext.SaveChanges()
当打电话ObjectContext.SaveChanges()我得到下面的异常 -
无法确定相关的操作有效的排序。由于外键约束,模型要求或商店生成的值,可能会存在依存关系。
我想EF4会因为确定前3个语句的执行顺序而感到困惑。 是否可以告诉EF4先执行哪些语句,然后执行什么?
我可以解决的一种方法是在第一步之后调用SaveChanges(),然后在第四步之后再次调用它。但我很想知道是否还有其他优雅的解决方案。
Dupe of http://stackoverflow.com/questions/4517566/does-entity-framework-support-circular-references/11812560#11812560 –