2011-02-08 85 views
1

mine是windows應用程序。我試圖通過LINQ DataContext插入一條記錄。它在表中具有唯一標識符。即使我在插入後執行觸發器。所以我在觸發器的末尾做了一個選擇查詢來獲取自動生成器號碼並避免自動同步錯誤。因爲它是一個Windows應用程序,我可以長期保持上下文。當我創建一個新的對象(例如訂單)並執行相同的以前操作時,在SubmitChanges操作時,它顯示不能有重複的鍵。我不能使用相同的上下文插入第二條記錄嗎?還是我需要創建一個新的上下文來插入新的記錄?(這個工作單元的概念來到這裏嗎?)。創建新的上下文是個壞主意,因爲我需要重新加載所有數據。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(); 

正如我上面提到的,這是公開售票按鈕點擊窗口形式。我更改該表單上可用的文本框中的fname,lname和全部值,並單擊相同的按鈕。所以它會再次調用相同的方法。我得到下面指定的錯誤。 System.Data.Linq.DuplicateKeyException:不能使用已在使用的鍵添加實體。

謝謝。

回答