2011-02-08 28 views
1

mineはWindowsアプリケーションです。私はLINQ DataContextを介してレコードを挿入しようとしています。テーブルには一意の識別子があります。私は挿入後にトリガーを実行しています。だから私は自動生成器の番号を取得し、自動同期エラーを避けるために、トリガの最後に選択クエリを作成しています。それは私は長い間コンテキストを維持することができますWindowsアプリケーションです。私が新しいオブジェクト(例えば、注文)を作成し、同じ前の操作を実行すると、SubmitChanges操作時に、重複キーを持つことができないことが示されます。この同じコンテキストを使用して2番目のレコードを挿入できませんか?または、新しいレコードを挿入するために新しいコンテキストを作成する必要がありますか(この作業単位の概念はここにありますか?)。新しいコンテキストを作成すると、すべてのデータを再度ロードする必要があるため、悪い考えです。System.Data.Linq.DuplicateKeyException:既に使用されているキーを持つエンティティを追加できません

何か考えましたか?

いくつかのコードサンプルを自分の声に声をかけてみましょう。このような設定の

CallCenterLogObjCotext = (CallCenterLogObjCotext == null ? (new CallcenterLogContext) : (CallCenterLogObjCotext)); 

CallDetail newCallDetailsOpenTicket = new CallDetail(); 

newCallDetailsOpenTicket.CallPurpose = (from callpuposelist in CallCenterLogObjCotext.CallPurposes where callpuposelist.CallPurposeID == ((CallPurpose)(cbcallpurpose.SelectedItem)).CallPurposeID select callpuposelist).FirstOrDefault(); 

たくさん...

CallCenterLogObjCotext.CallDetails.InsertOnSubmit(newCallDetailsOpenTicket); CallCenterLogObjCotext.SubmitChanges(); 

私は前述したように、これは、Windowsフォーム上のオープンチケット]ボタンをクリックします。そのフォームで使用可能なテキストボックスのfname、lname、およびallの値を変更し、同じボタンをクリックしました。それで、同じメソッドを再び呼び出します。私は下記のエラーが発生します。 System.Data.Linq.DuplicateKeyException:既に使用されているキーを持つエンティティを追加できません。

ありがとうございました。

答えて

関連する問題