Utilice DbContext en ASP .Net Singleton Injected Class

Necesito acceder a mi base de datos en una clase Singleton instanciada en mi clase de Inicio. Parece que inyectarlo directamente da como resultado un DbContext que está dispuesto.

Obtuve el siguiente error:

No se puede acceder a un objeto desechado. Nombre del objeto: 'MyDbContext'.

Mi pregunta es doble: ¿por qué esto no funciona y cómo puedo acceder a mi base de datos en una instancia de clase singleton?

Aquí está mi método ConfigureServices en mi clase de inicio:

public void ConfigureServices(IServiceCollection services)
{
    // code removed for brevity

    services.AddEntityFramework().AddSqlServer().AddDbContext<MyDbContext>(
        options =>
        {
            var config = Configuration["Data:DefaultConnection:ConnectionString"];
            options.UseSqlServer(config);
        });

    // code removed for brevity

    services.AddSingleton<FunClass>();
}

Aquí está mi clase de controlador:

public class TestController : Controller
{
    private FunClass _fun;

    public TestController(FunClass fun)
    {
        _fun = fun;
    }

    public List<string> Index()
    {
        return _fun.GetUsers();
    }
}

Aquí está mi FunClass:

public class FunClass
{
    private MyDbContext db;

    public FunClass(MyDbContext ctx) {
        db = ctx;
    }

    public List<string> GetUsers()
    {
         var lst = db.Users.Select(c=>c.UserName).ToList();
        return lst;
    }
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta