I am using Entity Framework code-first. I have a table the will not exceed 100 rows and I would like to use the datatype byte (tinyint in SQL Server) as the primary key.
This is what I have so far:
[Key]
public byte Id { get; set; }
The issue is when Entity Framework creates the database, it is not setting the identity specification property that allows the rows to auto increment on insert.
If I change the datatype to Int16 (smallint in SQL Server) everything works perfectly.
Is there a way to tell Entity Framework to set the auto increment property or can a byte not be used as the primary key with Entity Framework code-first?
The
bytetype is supported as key and as an identity column. It is just not the default to mark thebyteprimary key as identity. But you can overwrite this default:Setting the
Identityoption explicitly is not necessary for anint, alongand ashort(and perhaps more types?), but it is for abyte(=tinyintin SQL Server). I figured it out by testing but couldn’t find it officially documented anywhere.