Autonumber with Entity Framework
May sound silly but in our case there was an unnecessary select statement in a trigger that was making the trigger return data and the SaveChanges() actually took quite some time to execute and eventually thrown the above error.
I'm using EF6, to set the StoreGeneratedPattern, you can also try open EDMX file in Visual Studio, right click on the Data Column in table and select Properties,
Then you can set it from None
to Identity
in Properties Window:
This happens because despite the auto-generated value of the column was created in the Database the EF never knew about it.
So, in order to inform EF that the DB will handle the generated value you have to to open your edmx file (I always use the XML editor of VS to do this) and in the store schema definition language (SSDL) area, add the attribute StoreGeneratedPattern="Identity" to the column that needs the generated pattern. In this way EF reads the value generated in the DB and stores it in memory cache.
Your entity type definition will look more or less like this:
<EntityType Name="INVOICE">
<Key>
<PropertyRef Name="CODE" />
</Key>
<Property Name="CODE" Type="varchar" Nullable="false"
MaxLength="10" StoreGeneratedPattern="Identity"/>
</EntityType>
Be aware that if you happen to update your model all these changes will be lost and you'll have to repeat all the entire process.
This works for EF 1.0, I'm not sure if in EF4 all these issues are already fixed.
Set the StoreGeneratedPattern attribute to "Identity" in your SSDL for the autoincrement field. It should help.