C # WinForms - DataGridView / SQL Compact - отрицательное целое число в столбце первичного ключа - PullRequest
3 голосов
/ 02 сентября 2008

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

НО ...

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

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

Ответы [ 2 ]

5 голосов
/ 02 сентября 2008

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

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

3 голосов
/ 02 сентября 2008

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

...