¿Cuál es el equivalente de bigint en C#?
¿Qué se supone que debo usar al manejar un valor en C#, que es bigint para una base de datos de SQL Server?
Eso corresponde al largo (o Int64 ), un entero de 64 bits.
Aunque si el número de la base de datos es lo suficientemente pequeño y accidentalmente usas un Int32, etc., estarás bien. Pero el Int64 definitivamente aguantará.
¿Y el error que obtienes si usas algo más pequeño y se necesita el tamaño completo? ¡Un desbordamiento de pila! ¡Hurra!
Int64
mapas directamente a BigInt
.
Fuente
Acabo de tener un script que devolvía la clave principal de una inserción y usaba un
SELECT @@identity
en mi clave principal bigint y aparece un error de conversión al usar long; por eso comencé esta búsqueda. La respuesta correcta, al menos en mi caso, es que el tipo devuelto por esa selección es NUMÉRICO, lo que equivale a un tipo decimal. El uso de un largo provocará una excepción de conversión.
Esta es una razón para verificar sus respuestas en más de una búsqueda en Google (¡o incluso en Stack Overflow!).
Para citar a un administrador de base de datos que me ayudó:
... BigInt no es lo mismo que INT64 por mucho que se parezcan. Parte de la razón es que SQL frecuentemente convertirá Int/BigInt a Numeric como parte del procesamiento normal. Entonces, cuando pasa a OLE o .NET, la conversión requerida es NUMÉRICA a INT.
No solemos darnos cuenta porque el valor impreso tiene el mismo aspecto.
Utilice un tipo de datos largo.