从DuplicateKeyException恢复

时间:2011-07-19 12:51:34

标签: linq-to-sql

我正在使用linq to SQL应用程序。我正在创建一个新项目,并试图提交到数据库(插入)。偶尔会发生重复的密钥异常,这实际上是不时发生的。问题是,一旦抛出异常,我也无法插入有效的项目。它一直给我同样的错误。重新启动应用程序可以解决问题,我可以插入新值。想法?

1 个答案:

答案 0 :(得分:1)

如果SubmitChanges失败,则会保留所有挂起的更改以进行重试。这样就可以捕获异常,更新对象并重试。

如果这是一个问题,您可能会将DataContext保留太长时间。我假设您正在使用相同的DataContext重试。 DataContext应该是一个非常短暂的对象,它位于SubmitChanges之后。

另一种方法是检查DataContext.GetChangeSet()ChangeConflicts属性返回的值并修复错误并重试提交。可以使用从待处理插入列表DeleteOnSubmit()中删除对象。