質問: * データベースに対し`InsertOnSubmit`メソッドは成功しています * その後に`SubmitChanges`メソッドを実行しようとすると、`System.Data.Linq.DuplicateKeyException`例外が飛びます * 名前から「主キーが重複している」と察せられるが、書き込む前のデータベースの中身が空であることは別途表示用メソッドを用いて確認しています * 以上から、どのようにすればエラーが出ず、正常に実行できるのかを知りたいです
回答: エラーからすると単純に主キーの値が重複しているのだと思います。 通常の回避方法としては主キー用の`IDENTITY`属性付き`INT`列を追加し、`datetime`列の方にはインデックスを設定します。このインデックスはクラスター化してもよいです。 またテーブルを変更したくないのであれば、重複している場合はキー本来の値に`datetime`型の最小精度である3/1000秒ずつ加算するという手もあります。 なお重複データは ``` dataContext.GetChangeSet() .Inserts .OfType() .GroupBy(e => e.Key) .Where(g => g.Count() > 1) .Select(g => g.Key) // もしくは.SelectMany(g => g) .ToList() ``` のようなLINQで確認できるかと思います。