У меня есть приложение для Windows.Я пытаюсь вставить запись через DataContext.Имеет уникальный идентификатор в таблице.Даже я выполняю триггер после вставки.Поэтому я делаю запрос на выбор в конце триггера, чтобы получить номер автогенератора и избежать ошибки автосинхронизации.Поскольку это приложение для Windows, я могу хранить контекст в течение длительного времени.Когда я создаю новый объект (например, порядок) и выполняю ту же предыдущую операцию, после операции SubmitChanges он показывает, что не может иметь дубликат ключа.Почему я не могу использовать этот же контекст для вставки второй записи?Или мне нужно создать новый Контекст для вставки новой Записи? (Приходит ли сюда эта Концепция Единицы работы?).Создание нового контекста - плохая идея, так как мне нужно снова загрузить все данные ..
Есть мысли?
Пример кода, объясняющего мою ситуацию:
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();
Как я уже упоминал выше, это нажатие на кнопку Open Ticket в форме окна.Я изменяю значения fname, lname и всего в текстовых полях, доступных в этой форме, и нажимаю ту же кнопку.Так что он будет вызывать тот же метод снова.Я получаю указанную ниже ошибку:
System.Data.Linq.DuplicateKeyException: Невозможно добавить объект с ключом, который уже используется.