Параметры @RegioniD и @RegionDescription

однако для большой таблицы сравнение

Параметры @RegioniD И @RegionDescription Были бы заполнены текущими значениями обновляемой строки, а параметры @Original_RegionlD И @Original_RegionDescription — исходными значениями строки, которые сохраняет набор данных. Однако для большой таблицы сравнение значений каждого столбца означает пересылку через соединение с базой данных больших объемов данных туда и обратно. Неплохим компромиссом, если вы контролируете схему базы данных, будет включение столбца временной отметки, версии строки или времени последней модификации, который обновляется всякий раз, когда обновляется какой-либо из столбцов строки. Затем вы, чтобы обнаружить нарушения параллелизма, просто сравниваете значение этого единственного столбца. Другим вариантом является использование некоторого подмножества столбцов в строке для определения того, произошло ли нарушение. Например, если таблица, в которой хранятся большие изображения, содержала бы также их имя, размер и хэш содержимого изображения, вы могли бы сравнивать эти столбцы, чтобы решить, было ли произведено параллельное обновление изображения или нет. Класс SqlDataAdapter Имеет встроенную логику для обнаружения нарушений оптимистической конкуренции, основанную на SQL-переменной @@ROWCOUNT, которая показывает число строк, на которые оказал воздействие исполняемый запрос. Если запрос, который вы исполняете для выполнения обновления, вставки или удаления, указывает, что число подвергшихся воздействию строк было нулевым, адаптер данных возбуждает DBConcurrencyException. Вы можете включиться в эту логику обнаружения как при использовании текстовых SQL-запросов, подобных показанному В Вышеприведенном примере, так и в случае, когда вы производите свои обновления посредством сохраняемой процедуры. Если исполняемый командой запрос, каким бы он ни был, воздействует на нулевое число строк, адаптер данных выбросит исключение, которое вы сможете перехватить и соответствующим образом обработать. Эта логика исходит из того, что число подвергшихся воздействию строк должно быть равно единице, что указывало бы на успешное обновление.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *