C# WinForms - DataGridView/SQL Compact - Entero negativo en la columna de clave principal
-
09-06-2019 - |
Pregunta
Me estoy ensuciando en WinForms y descubrí, a través de un encantador tutorial, la magia de arrastrar una tabla de base de datos a la vista de diseño de mi formulario principal.Entonces, todo es maravilloso, tengo mi DataGridView con todas las columnas representadas maravillosamente.
PERO...
Cuando ejecuto mi aplicación en este .sdf nuevo y vacío (guardado vacío para las dos tablas que he creado, que a su vez están vacías), obtengo un -1 en la columna correspondiente a mi columna de clave principal/identidad cada vez que lo intento. para crear ese primer registro.
¿Alguna idea de por qué esto podría estar sucediendo?Si ayuda, la columna es una int
.
Solución
Dado que es una columna de Identidad y aún no la ha guardado en la base de datos, es -1.Supongo que esto es antes de guardar la tabla en la base de datos, ¿correcto?Debe realizar la inserción antes de que ese valor se establezca correctamente.
Otros consejos
@Brian -1 es una buena opción para el valor predeterminado ya que es probable que ninguna fila "real" tenga identidades menores que cero.Si su valor predeterminado es 0 o 1, entonces habría una posibilidad de que entrara en conflicto con una fila existente, causando una violación de la clave principal.
Para las aplicaciones que permanecen fuera de línea y crean varias filas antes de guardarlas, una práctica común es continuar contando hacia atrás (-2, -3, -4) para la identidad de cada nueva fila.Luego, cuando se guardan, el servidor puede reemplazarlos con el verdadero valor "siguiente" de la tabla.