ASP.NET Core - Service Scope - Singleton vs Scoped vs Transient