entity-framework - EF4 - 强制执行顺序

标签 entity-framework entity-framework-4 entity-relationship

我有三个表 - 上下文、 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/

相关文章:

sql - 可选结构sql

ruby-on-rails - Restful 身份验证——将用户 ID 与配置文件相关联

linq - LINQ 中的 DATEDIFF(以月为单位)

c# - 将带双引号和单引号的字符串从 EF 保存到 SQL

wpf - 使用 SQL Compact 4 和 Entity Framework 4 部署 WPF?

LINQ 查询类似于 SQL WHERE x IN

sql - 一对多关系的最大约束 - Oracle SQL

c# - 无法返回类型 IQueryable 或 IEnumerable

c# - 更改 ASP .NET MVC 模型类中的主键名称

.net - LINQ to Entities 无法识别方法