ulong - uint64 c#
¿Es buena idea usar uint en lugar de int como la clave principal en la clase de modelo de datos? (4)
Creo que es una mala idea, porque el tipo int está más optimizado para usar en .NET Framework.
Sabemos que las claves primarias suelen ser enteros positivos.
¿Es buena idea usar uint
lugar de int
como la clave principal en la clase de modelo de datos?
Ejemplo :
public class Customer
{
public uint CustomerId {get;set;}
//others are omitted for the sake of simplicity.
}
El tipo de datos SQL correspondiente es un número firmado, así que me quedo con el int
para evitar sorpresas.
En caso de que alguien más se tropiece con esta pregunta, no use uint
para sus llaves. Acabo de intentarlo con Entity Framework 6.1.12 y el código sigue fallando con la críptica "Entidad no tiene la clave", la excepción.
Solo después de cambiar la propiedad uint de nuevo a int, comenzó a funcionar como se esperaba.
Entonces, sí, apesta tener más de 2 mil millones de rango sin usar, pero así son las cosas. Y si tiene alguna duda de que puede terminar con más de mil millones de registros, hágalo. Irónicamente, entonces tendrá 9.223.372.036.854.775.808 números sin usar;).
uint no es compatible con CLS , por lo que generalmente se recomienda no usarlo en API públicas.