В основном у меня есть таблица, которая содержит иерархические данные.
Итак, у меня есть столбец идентификатора и сводный столбец, который указывает на столбец идентификатора для родительского элемента каждого дочернего элемента.
Эта таблицазагружается из базы данных с помощью GetData () в TableAdapter, а затем автоинкрементное значение первичного ключа таблицы устанавливается с помощью:
SELECT IDENT_CURRENT ('TableName') + 1
Новые дочерние элементысоздаются в иерархии, затем я вызываю Update () для того же TableAdapter.
Большую часть времени это работает отлично, но иногда я получаю, что столбец ContraintException 'id' ограничен, чтобы быть уникальной проблемой, и этоКажется, что это происходит только при добавлении новых строк.
Обычно, я бы просто установил autoincrementseed и autoincrementstep на -1, и после обновления столбец id получал бы правильные значения из базы данных, но поскольку столбец свертки зависитдля значений первичного ключа это не сработает.
Я не могу применить каждую новую строку в прямом эфире, потому что всеl изменения в целом должны быть проверены пользователем, прежде чем они будут применены к базе данных.
Любые идеи?
РЕДАКТИРОВАТЬ: я должен упомянуть, что другие изменения не вносятся в эту таблицуиз любого другого источника, поэтому здесь нет проблем с параллелизмом.
ДРУГОЕ РЕДАКТИРОВАНИЕ: Сегодня я проверил значения в таблице перед вызовом метода обновления и заметил, что проблема связана с неправильной обработкой новых строкотсортировано по первичному ключу.
Так, например, пошли строки, 960 961 963 962, и когда был вставлен 962, я получил ошибку, что 962 уже существует.Если бы обновление вставило строки, чтобы этого не случилось.
Почему таблица индексирует строки не по порядку первичного ключа?