2011-07-19 5 views
1

私は、私が作業しているlinq to SQLアプリケーションを持っています。新しいアイテムを作成していて、データベースに登録しようとしていました(挿入)。たまには重複したキーの例外が発生しますが、実際には時々期待されます。問題は、例外がスローされると、有効な項目を挿入することができないということです。それは私に同じエラーを与え続ける。アプリを再起動すると問題が解決し、新しい値を挿入できます。アイデア?DuplicateKeyExceptionsからの回復

+0

例外からどのように処理して復旧していますか? –

答えて

1

SubmitChangesが失敗した場合、保留中の変更はすべて再試行のために保持されます。これにより、例外を捕捉し、オブジェクトを更新して再試行することができます。

これが問題になる場合は、DataContextの保存時間が長すぎる可能性があります。私はあなたが同じDataContextを使用して、再試行していると仮定します。 DataContextは、非常に短命のオブジェクトである必要があります。これは、SubmitChangesの直後に配置されます。

代替方法は、DataContext.GetChangeSet()またはChangeConflictsプロパティから返された値を調べ、エラーを修正してサブミットを再試行する方法です。保留中の挿入リストからオブジェクトを削除するにはDeleteOnSubmit()を使用できます。

+0

ありがとう、これは役立ちます。 – Geoff

関連する問題