我首先使用Entity Framework代码。我有一个不超过100行的表,我想使用数据类型byte
(SQL Server中的tinyint
)作为主键。
这是我到目前为止所做的:
[Key]
public byte Id { get; set; }
问题是当Entity Framework创建数据库时,它没有设置允许行在插入时自动递增的标识规范属性。
如果我将数据类型更改为Int16
(SQL Server中的smallint
),一切都会正常运行。
有没有办法告诉实体框架设置自动增量属性,还是一个字节不能用作实体框架代码优先的主键?
答案 0 :(得分:13)
支持byte
类型作为键和标识列。将byte
主键标记为标识并不是默认设置。但您可以覆盖此默认值:
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public byte Id { get; set; }
对于Identity
,int
和long
(以及可能更多的类型?),不需要明确设置short
选项,但它适用于{ {1}}(= SQL Server中的byte
)。我通过测试得出结论,但无法在任何地方找到正式记录。