Historically, Entity Framework offered two ways to handle primary key generation:
Using the SQL Server
IDENTITY
mechanismManually setting the key
There are several problems with this approach. One is that the IDENTITY
mechanism really only works in SQL Server, although similar features exist in other RDBMs, such as the MySQL AUTOINCREMENT
. Another one is that the ORM, because it doesn't know the key to be inserted beforehand, needs to get into some trouble to figure it out after a record is inserted. Finally, there are far more efficient and flexible mechanisms that do not rely on a specific database engine, such as the
High-Low algorithm.
Knowing this, Microsoft took a step forward and introduced an implementation of High-Low in Entity Framework Core 1. The downside to it is that, for now at least, it requires SQL Server 2012: the way it was implemented is dependent on sequences that were only introduced in SQL Server 2012. So we're still stuck.