Нарушение параллелизма:- команда 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()