Almacenamiento en caché de DbContext

Sé que el almacenamiento en caché de DbContext no es una buena idea. Pero me gustaría hacerlo bien. ¿Qué opinas de esta manera?

public class Context : DbContext
{
    private Context()
    {
    }

    private static WeakReference<Context> _cachedContext;

    public Context Instance
    {
        get
        {
            Context context;
            if (!_cachedContext.TryGetTarget(out context))
            {
                context = new Context();
                _cachedContext.SetTarget(context);
            }
            return context;
        }
    }
}

Este código está planeado para ser utilizado sin IDisposable. Deseche la llamada en el lado del cliente. ¿Qué problemas puede causar esto, excepto el patrón singleton (anti)? Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta