C# WinForms — DataGridView/SQL Compact — отрицательное целое число в столбце первичного ключа

StackOverflow https://stackoverflow.com/questions/38510

Вопрос

Я только начинаю работать с WinForms и благодаря прекрасному руководству открыл для себя волшебство перетаскивания таблицы базы данных в представление дизайна моей основной формы.Итак, все прекрасно, у меня есть DataGridView со всеми красиво представленными столбцами.

НО...

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

Есть идеи, почему это может происходить?Если это поможет, столбец представляет собой int.

Это было полезно?

Решение

Поскольку это столбец Identity, и вы еще не сохранили его в базе данных, он равен -1.Я предполагаю, что это происходит до того, как вы сохраните таблицу обратно в базу данных, верно?Вам необходимо выполнить вставку, прежде чем это значение будет установлено правильно.

Другие советы

@Brian -1 - хороший выбор для значения по умолчанию, поскольку никакие «реальные» строки вряд ли будут иметь идентификаторы меньше нуля.Если бы по умолчанию было установлено значение 0 или 1, существовала бы вероятность конфликта с существующей строкой, что привело бы к нарушению первичного ключа.

Для приложений, которые остаются в автономном режиме и создают несколько строк перед сохранением, обычной практикой является продолжение обратного счета (-2, -3, -4) для каждого нового идентификатора строки.Затем, когда они будут сохранены, сервер может заменить их истинным «следующим» значением из таблицы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top