使用byte作为主键数据类型

时间:2012-08-30 17:21:09

标签: c# .net sql-server entity-framework ef-code-first

我首先使用Entity Framework代码。我有一个不超过100行的表,我想使用数据类型byte(SQL Server中的tinyint)作为主键。

这是我到目前为止所做的:

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

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

如果我将数据类型更改为Int16(SQL Server中的smallint),一切都会正常运行。

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

1 个答案:

答案 0 :(得分:13)

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

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

对于Identityintlong(以及可能更多的类型?),不需要明确设置short选项,但它适用于{ {1}}(= SQL Server中的byte)。我通过测试得出结论,但无法在任何地方找到正式记录。