Нарушение параллелизма:- команда UpdateCommand затронула 0 из ожидаемых 1 записей

Мы используем формы Windows. В форме у нас есть gridview, в котором мы выполняем вставку новой строки и обновление существующей строки вместе. И для процесса ниже приведен код,

OracleDataAdapter adapter = new OracleDataAdapter(sql, conn);
OracleCommandBuilder oraCmdBuilder = new  OracleCommandBuilder(adapter);
OracleDataAdapter adap = new OracleDataAdapter();
adap.SelectCommand = new OracleCommand(sql, conn);

adap.InsertCommand = oraCmdBuilder.GetInsertCommand();
adap.InsertCommand.Connection = conn;
adap.UpdateCommand = oraCmdBuilder.GetUpdateCommand();
adap.UpdateCommand.Connection = conn;
adap.DeleteCommand = oraCmdBuilder.GetDeleteCommand();
adap.DeleteCommand.Connection = conn;
adap.UpdateBatchSize = 100;

int i = adap.Update(deltaTable);

куда InsertCommand работает нормально и выдает исключение в adap.Update(deltaTable); как показано ниже,

Нарушение параллелизма: команда UpdateCommand затронула 0 из 1 ожидаемых записей. мы пытались добавить acceptchanges перед методом update, но это изменение повлияло на удаление. Строка не удалялась.

Любые предложения приветствуются.

Заранее спасибо.

С уважением

1 ответ

Решение

Я столкнулся с этой проблемой и ниже причины

1) В вашем update запросить у вас контролируемые данные с оригинальными данными перед обновлением. Решить удалить это условие из запроса. Если вы удалите условие, то оно превращается в last modified win, Условия имеют @original префикс. Запрос как

WHERE CustomerID = @Original_CustomerID OR @Original_CustomerID IS NULL AND  customer ID IS NULL

2) Перед Update в вашем коде где угодно Row.AcceptChanges()

Другие вопросы по тегам