You’re registering SGDTPContext as a scoped service and then attempting to access it outside of a scope. To create a scope inside your SeedDatabase method, use the following:
using (var serviceScope = app.ApplicationServices.CreateScope())
{
var context = serviceScope.ServiceProvider.GetService<SGDTPContext>();
// Seed the database.
}
Credit to @khellang for pointing out the CreateScope extension method in the comments and to @Tseng’s comment and answer re how to implement seeding in EF Core 2.