C# WinForms — DataGridView/SQL Compact — отрицательное целое число в столбце первичного ключа
-
09-06-2019 - |
Вопрос
Я только начинаю работать с WinForms и благодаря прекрасному руководству открыл для себя волшебство перетаскивания таблицы базы данных в представление дизайна моей основной формы.Итак, все прекрасно, у меня есть DataGridView со всеми красиво представленными столбцами.
НО...
Когда я запускаю свое приложение для этого совершенно нового, пустого файла .sdf (пустое сохранение для двух созданных мною таблиц, которые сами по себе пусты), я получаю -1 в столбце, соответствующем столбцу моего первичного ключа/идентификатора, всякий раз, когда я пытаюсь чтобы создать эту первую запись.
Есть идеи, почему это может происходить?Если это поможет, столбец представляет собой int
.
Решение
Поскольку это столбец Identity, и вы еще не сохранили его в базе данных, он равен -1.Я предполагаю, что это происходит до того, как вы сохраните таблицу обратно в базу данных, верно?Вам необходимо выполнить вставку, прежде чем это значение будет установлено правильно.
Другие советы
@Brian -1 - хороший выбор для значения по умолчанию, поскольку никакие «реальные» строки вряд ли будут иметь идентификаторы меньше нуля.Если бы по умолчанию было установлено значение 0 или 1, существовала бы вероятность конфликта с существующей строкой, что привело бы к нарушению первичного ключа.
Для приложений, которые остаются в автономном режиме и создают несколько строк перед сохранением, обычной практикой является продолжение обратного счета (-2, -3, -4) для каждого нового идентификатора строки.Затем, когда они будут сохранены, сервер может заменить их истинным «следующим» значением из таблицы.