10

我首先使用实体​​框架代码。我有一个不超过 100 行的表,我想使用数据类型bytetinyint在 SQL Server 中)作为主键。

这是我到目前为止所拥有的:

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

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

如果我将数据类型更改为Int16smallint在 SQL Server 中)一切正常。

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

4

1 回答 1

17

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

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

对于 a 、 a和 a (也许还有更多类型?)Identity不需要显式设置选项,但对于 a (=在 SQL Server 中)是必需的。我通过测试发现了它,但在任何地方都找不到它的正式记录。intlongshortbytetinyint

于 2012-08-30T19:11:10.180 回答