ramakrishna Namburu Ответов: 5

[Решено] нарушение параллелизма : Обновлено 0 из ожидаемых 1 записей


Всем Привет,
Когда я пытаюсь обновить таблицу базы данных с помощью метода Dataadapter.update в C#, выдает ошибку "нарушение параллелизма : Обновлено 0 из ожидаемых 1 записей".
Пожалуйста, помогите мне, как это решить.

С уважением,
Рамакришна

Обновление от ОП:
ОП смог решить этот вопрос самостоятельно. Опубликовал резолюцию в качестве одного из ответов.

5 Ответов

Рейтинг:
2

aricode

Всем Привет,
Этот блог http://blogs.msdn.com/b/spike/archive/2010/04/07/concurrency-violation-the-updatecommand-affected-0-of-the-expected-1-records.aspx[^]
определяет причину связанной проблемы, однако наиболее конкретно эту причину лучше всего понять из msdn http://msdn.microsoft.com/en-us/library/cs6hb8k4.aspx[^]

Взято из msdn

Цитата:
При попытке обновления исходная версия измененной строки сравнивается с существующей строкой в базе данных. Если они отличаются друг от друга, обновление завершается ошибкой параллелизма. В этот момент Вы должны согласовать две строки, используя созданную вами бизнес-логику.


Пример для иллюстрации
В колонке datatime в SQL 'createdon и modifiedon были получены и уже поменял на varchar, чтобы показать его пользователям
Цитата:
выберите топ 1 имя, роль, конвертировать(тип varchar, createdon и modifiedon, 105), а createdon и modifiedon from Имя_таблицы

Теперь, когда пользователь со стороны пользовательского интерфейса обновляет строку, позволяет сказать " имя "и сделать обновление строки в БД, это не даст ошибки нарушения параллелизма, потому что столбец "modifiedOn" не изменяется и отличается от существующей строки в базе данных.


Рейтинг:
1

ramakrishna Namburu

Всем привет,
Я получил этот решен путем указания объекта DataTable.метод acceptchanges().
как только это будет сделано, установите добавленное свойство каждой строки в true, и вы окажетесь там с правильной работой приложения.
Спасибо всем за ответы.


Рейтинг:
1

Eduard Keilholz

Эй Рамакришна,

В большинстве случаев я сталкивался с этим исключением, когда один или несколько столбцов в наборе данных (или datatable), подлежащем обновлению, автоматизированы, или база данных дает одному или нескольким полям разные значения из-за триггеров.

У меня были таблицы с полем DateCreated и DateModified. Поле DateModified было заполнено с помощью триггера обновления в базе данных SQL Server. Это вызвало voilation параллелизма. Надеюсь, это поможет.

удачи,
Эдуард


Member 11476505

Очень полезно спасибо вам оооочень много

Eduard Keilholz

Рад, что это может помочь :)

Рейтинг:
1

Abhinav S

Взгляните на это этот[^] блог - это должно дать вам достаточно информации, чтобы начать работу с разрешением. Следуйте ссылкам, приведенным в нижней части блога.


Рейтинг:
0

Member 11126085

У меня возникла эта проблема после использования инструкции my Update для моего TableAdapter.

Я решил эту проблему, снова заполнив свой TableAdapter после метода обновления. Затем он снова извлек данные.

Это происходит потому, что мы используем "оптимистический параллелизм", который вы можете отключить в расширенных опциях при настройке адаптера таблицы в конструкторе наборов данных.