使用uint而不是int作为数据模型类中的主键是否是个好主意?

我们知道主键通常是正整数。

使用uint而不是int作为数据模型类中的主键是否是个好主意?

示例

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

相应的SQL数据类型是带符号的数字,所以我坚持使用int来避免任何意外。

uint不符合CLS ,因此通常建议不要在公共API中使用它。

如果其他人偶然发现了这个问题 – 不要使用uint作为你的钥匙。 我刚刚尝试使用Entity Framework 6.1.12并且代码保持失败并且隐藏着“实体没有密钥”exception。

只有在我将uint属性更改回int之后,才开始按预期工作。

所以,是的,有2亿个范围未使用很糟糕,但事情就是如此。 如果你甚至有一点怀疑,你最终可能会得到十亿以上的记录,那就去吧。 具有讽刺意味的是,你将获得9,223,372,036,854,775,808个未使用的数字;)。

我认为这是个坏主意,int类型的原因更适合在.NET Framework中使用。