由于触发了Trigger和OptimisticConcurrencyException,EntityFramework Insert失败了,如何处理呢?

时间:2015-06-23 07:12:31

标签: entity-framework triggers entity-framework-6

我在DB中有一个禁止插入重复数据的触发器。当我输入重复数据时,它不会向表中添加任何内容,抛出OptimisticConcurrencyException并且我正在吞咽(忽略)此异常。当我尝试输入新的正确对象时,EF会尝试同时运行两个INSERT并在第一个上再次失败。

如何从中恢复,所有示例都在讨论失败的更新,INSERT有什么关系吗?正如我已经阅读过创建新的DatabaseContext将解决问题,但我无法这样做。

2 个答案:

答案 0 :(得分:1)

创建新的DatabaseContext始终是最佳选择(自Hibernate以来)。 在您的情况下,您需要从上下文中删除导致错误的实体。

((IObjectContextAdapter)context).ObjectContext.Detach(entity);

答案 1 :(得分:0)

在抛出可忽略的异常后,您可以要求ObjectContext忽略所有更改。这样添加的实体就标记为Unchanged;因此,在下一个SaveChanges调用中,上下文不会考虑操纵DB:

(yourContextObject as IObjectContextAdapter).AcceptAllChanges();