Как удалить и вставить записи с одним и тем же первичным ключом, используя транзакции Linq - PullRequest
0 голосов
/ 03 декабря 2009

У нас есть одна таблица в базе данных, которая представляет собой группу элементов div на нашей веб-странице. Каждый элемент div имеет ширину в пикселях, высоту, верх и слева сохраняется как отдельные записи в таблице. У него есть первичный ключ. Мы загружаем все div из таблицы на веб-страницу, пользователь реорганизует квадраты, а затем в одной транзакции сохраняет измененные квадраты обратно в таблицу, используя методы Linq "OnSubmit".

Наша проблема в том, что мы удаляем все квадраты, а затем снова вставляем все квадраты. Без транзакций это работает нормально. В случае транзакций он помечает все записи, которые должны быть удалены, затем вставки фактически обновляют записи, которые уже помечены для удаления. В конце концов, некоторые квадраты отсутствуют.

Мы выполняем DeleteOnSubmit (), затем InsertOnSubmit (), затем, в конечном итоге, .SubmitChanges ().

Где мы делаем нашу ошибку? Как вы справляетесь с удалением и повторной вставкой всех в одной транзакции? Очевидно, что мы могли бы SubmitChanges () после удаления, но это не поместило бы это в ту же самую транзакцию.

Есть идеи? Какие-нибудь образцы? Вам нужен реальный исходный код, чтобы продолжить?

1 Ответ

2 голосов
/ 08 декабря 2009

Мы рекомендуем открыть транзакцию самостоятельно и зафиксировать ее при необходимости.
В этом случае внутренняя сделка не будет открыта.

t = db.Connection.BeginTransaction();
db.Transaction = t;
DeleteOnSubmit();
SubmitChanges();
InsertOnSubmit();
SubmitChanges();
t.Commit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...