使用byte作为主键数据类型

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

这是我到目前为止:

 [Key] public byte Id { get; set; } 

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

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

有没有办法告诉entity framework设置自动增量属性,还是一个字节不能用作entity framework代码优先的主键?

支持byte类型作为键和标识列。 将byte主键标记为标识不是默认设置。 但您可以覆盖此默认值:

 [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public byte Id { get; set; } 

明确地设置Identity选项对于intlongshort (以及可能更多类型?)不是必需的,但它是一个byte (在SQL Server中为tinyint )。 我通过测试得出结论,但无法在任何地方找到正式记录。