使用byte作为主键数据类型

use*_*926 9 .net c# sql-server entity-framework ef-code-first

我正在使用实体框架代码优先.我有一个表不会超过100行,我想使用数据类型byte(tinyint在SQL Server中)作为主键.

这是我到目前为止:

[Key]
public byte Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

问题是当Entity Framework创建数据库时,它没有设置允许行在插入时自动递增的标识规范属性.

如果我将数据类型更改为Int16(smallint在SQL Server中)一切都很完美.

有没有办法告诉实体框架设置自动增量属性,或者一个字节不能用作实体框架代码优先的主键?

Sla*_*uma 15

byte类型作为键和标识列受支持.将byte主键标记为标识并不是默认设置.但是你可以覆盖这个默认值:

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public byte Id { get; set; }
Run Code Online (Sandbox Code Playgroud)

Identity对于a int,a long和a short(可能还有更多类型?),不需要显式设置选项,但它适用于byte(= tinyint在SQL Server中).我通过测试发现它,但无法在任何地方找到正式记录.