我正在使用linq to SQL应用程序。我正在创建一个新项目,并试图提交到数据库(插入)。偶尔会发生重复的密钥异常,这实际上是不时发生的。问题是,一旦抛出异常,我也无法插入有效的项目。它一直给我同样的错误。重新启动应用程序可以解决问题,我可以插入新值。想法?
答案 0 :(得分:1)
如果SubmitChanges
失败,则会保留所有挂起的更改以进行重试。这样就可以捕获异常,更新对象并重试。
如果这是一个问题,您可能会将DataContext保留太长时间。我假设您正在使用相同的DataContext重试。 DataContext应该是一个非常短暂的对象,它位于SubmitChanges
之后。
另一种方法是检查DataContext.GetChangeSet()
或ChangeConflicts
属性返回的值并修复错误并重试提交。可以使用从待处理插入列表DeleteOnSubmit()
中删除对象。