public static void ResetValueGenerators(this DbContext context) { IValueGeneratorCache cache = context.GetService <IValueGeneratorCache>(); foreach (IProperty keyProperty in context.Model.GetEntityTypes() .Select(e => e.FindPrimaryKey().Properties[0]) .Where(p => p.ClrType == typeof(int) && p.ValueGenerated == ValueGenerated.OnAdd)) { ResettableValueGenerator generator = (ResettableValueGenerator)cache.GetOrAdd( keyProperty, keyProperty.DeclaringEntityType, (p, e) => new ResettableValueGenerator()); generator.Reset(); } }