Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Базы данных под .NET > Проблема с автоинкрементальным полем в ADO.NET |
Автор: DimaBy 21.3.2007, 09:43 |
При создании новой записи значение автоинкрементального поля генерирует сам Dataset, затем при обновлении базы методом update значение этого поля обновляется значение, которое генерирует сам Access. При этом зачастую эти значения не совпадают. Можно ли как-то синхронизировать генерацию этого поля. Р.S. В таблица реализует многоуровневую структуру и в качестве идентификатора родителя используется ID родительской записи. Можно было бы конечно завести в каждой ячейке целочисленное поле, которому присваивать значение автоинкремента, сгенерированное датасетом, и потом ссылаться на это значение. В принципе от этого уникальность не пострадает, но мне это кажется отнюдь не самым аккуратным вариантом. |
Автор: mr.DUDA 21.3.2007, 10:05 |
DimaBy, эта проблема решается элементарно: в поле нужно установить начальное значение -1 и автоинкремент -1, тогда в датасете поле с автоинкрементом будет расти в другую сторону и никогда не пересечётся со значением из БД. ![]() Предугадывая закономерный вопрос - отрицательные айдишники работают так же нормально, как и положительные. |
Автор: DimaBy 21.3.2007, 10:25 |
Не понимаю ![]() Я реализую многоуровневую структуру. - прохожу дерево, добавляю для каждого узла запись, запоминаю её ID, потом для всех потомковустанавливаю поле родителя равным этому ID. Но ID то неправильный! |
Автор: DimaBy 21.3.2007, 10:58 | ||
не обновляются 1)создаю Row с помощью NewRow 2)добавляю его в Rows 3)делаю (dataAdapter.Update(dataSet)) 4)у Row все равно значение датасетовское а не Access'овское помогает только
но это как-то нерационально |
Автор: mr.DUDA 21.3.2007, 14:30 |
Там как-то надо передать Identity из запроса обратно, через выходной параметр по-моему... Не шарю в этом, надо у других спросить. |