使用 uint 作为主键的代码优先方法

Posted

技术标签:

【中文标题】使用 uint 作为主键的代码优先方法【英文标题】:Code First approach using uint as primary key 【发布时间】:2019-08-05 04:16:58 【问题描述】:

我在 MVC 中采用代码优先方法来生成表。我试图使我的 Employee 类的主键成为 uint 以防止负值,但显然,我总是遇到异常。是否有用于 int 类型的装饰代码以防止负数或允许 uint 作为主键的解决方法?

public class Employee

     [Key]
     [Column(Order = 0)]
     public uint EmployeeId  get; set; 

     public string FirstName  get; set; 
     public string LastName  get; set; 
     public decimal Salary  get; set; 

【问题讨论】:

有什么例外? 您的问题与 MVC 或 Web 无关。 uint 应该是可能的,但不建议这样做。只需使用int 如果您想要比int 更高的精度,请使用long 而不是uint 许多 SQL 数据库不支持无符号整数。例如,SQL Server 将只使用long 来“支持”uint。使用int 并确保它在您的域代码中不是负数。此外,请考虑仅使用 Id。它在Employee 类中,因此它已经暗示Id 是员工ID。 【参考方案1】:

看看this。

另外,uint不是CLS compliant,所以一般不推荐使用

【讨论】:

以上是关于使用 uint 作为主键的代码优先方法的主要内容,如果未能解决你的问题,请参考以下文章

如何按照我们在 mvc 代码优先方法中的模式制作自动生成的主键

sql 用于将列更改为作为主键的标识列的SQL代码。您必须删除密钥,删除列,将列添加回i

没有主键的桥接表

基于非主键的ef核心查询

实体框架代码优先迁移忽略 [Key] 并强制复合键

使用 GUID 作为主键的最佳做法是啥,特别是在性能方面? [关闭]