2008-09-01 9 views
3

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

НО ...

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

Любая идея, почему это может произойти? Если это помогает, столбец int.

ответ

3

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

5

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

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