Est-ce une bonne idée d’utiliser uint au lieu de int comme clé primaire dans la classe de modèle de données?

Nous soaps que les clés primaires sont généralement des entiers positifs.

Est-ce une bonne idée d’utiliser uint au lieu de int comme clé primaire dans la classe de modèle de données?

Exemple :

 public class Customer { public uint CustomerId {get;set;} //others are omitted for the sake of simplicity. } 

Le type de données SQL correspondant est un numéro signé, je me contenterais donc de l’ int pour éviter toute surprise.

uint n’est pas conforme à CLS , il est donc généralement recommandé de ne pas l’utiliser dans les API publiques.

Au cas où quelqu’un trébuche sur cette question, n’utilisez pas uint pour vos clés. Je viens d’essayer cela avec Entity Framework 6.1.12 et le code échouant continuellement avec l’exception cryptique “Entity n’a pas de clé”.

Ce n’est qu’après avoir modifié la propriété uint en int qu’il a commencé à fonctionner comme prévu.

Donc, oui, il est nul d’avoir plus de 2 milliards de scope non utilisés, mais c’est comme ça. Et si vous avez un léger doute sur le fait que vous pourriez vous retrouver avec des milliards de disques en plus, allez-y longtemps. Ironiquement, vous aurez alors 9 223 372 036 854 775 808 numéros non utilisés;).

Je pense que c’est une mauvaise idée, car le type int est plus optimisé pour une utilisation dans .NET Framework.