Hi there,
I think there is some confusion over who "picks" the identity. The DbContext does not infact pick the identity, the database does. When you call SaveChanges, Entity Framework inserts the records into the database, the database "picks" the identity, and returns that identity back to EntityFramework to populate on your model.
So to your particular question :
if at the same time in another scope creates a new record and dbcontext has picked 1 for the identity value
This will not happen as the database controls identity, and even if two requests are being handled concurrently by your application and being inserted into the database, the database will handle this for you and not pick clashing identities.