У меня есть таблица, которая содержит пары Key (LocumID
) - Value (AvailableDate
). У таблицы есть свой учебник для начинающих. Ключ / значение не может быть повторен, поэтому я добавил уникальное составное ограничение для LocumID & AvailableDate
.
OID LocumID AvailableDate AvailabilityStatusID
-------------------- -------------------- ----------------------- --------------------
1 1 2009-03-02 00:00:00 1
2 2 2009-03-04 00:00:00 1
3 1 2009-03-05 00:00:00 1
4 1 2009-03-06 00:00:00 1
5 2 2009-03-07 00:00:00 1
6 7 2009-03-09 00:00:00 1
7 1 2009-03-11 00:00:00 1
8 1 2009-03-12 00:00:00 2
9 1 2009-03-14 00:00:00 1
10 1 2009-03-16 00:00:00 1
Теперь, при реальном использовании, я считаю, что лучшим решением будет просто исключить старые значения для пары LocumID-AvailableDate и вставить новое. Однако в Linq-to-SQL я в конце вызываю DbContext.SubmitChanges()
, и именно здесь SQL Server выдает исключение, сообщающее, что инструкция конфликтует с ограничением.
Теперь, если я проверю свои строки кода, я сначала удаляю уже существующую пару, создаю новую и вставляю ее. Почему в этой транзакции нарушается ограничение?
Кроме того, если я сначала удаляю ранее существующую пару, то SubmitChanges
, а затем приступаю к созданию новой, вставляю ее, и SubmitChanges
... все хорошо.
Однако я теряю преимущество полной транзакции.
Есть идеи? Привет.