Entity Framework Core 1.0 DbContext no tiene ámbito para la solicitud http

Entendí viendo este video con Rowan Millerhttps://channel9.msdn.com/Series/Whats-New-with-ASPNET-5/06 (en el minuto 22) esa es la forma de configurar Entity Framework Core (anteriormente conocido como EF7) en una aplicación ASP.NET Core 1.0 (anteriormente conocida como ASP.NET 5) enStartup.cs es como sigue:

    public void ConfigureServices(IServiceCollection services)
    {
        //Entity Framework 7 scoped per request??
        services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<MyDbContext>(options =>
            {
                options
                  .UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]);
            });

        //MVC 6
        services.AddMvc();
    }

y esoeste DbContext se limitará a una solicitud http de modo que siempre que se use un DbContext en el código a través de la canalización http (incluido middleware o MVC), sabemos con certeza que la instancia inyectada por el contenedor DI será la misma.

Pero el problema es que no parece funcionar de esa manera. Dentro de la vida útil de MVC, es cierto que la instancia DbContext inyectada es la misma, pero como se describe aquí:Unidad de trabajo Entity Framework Core 1.0 con middleware Asp.Net Core o filtro Mvc Estoy tratando de conectar a la tubería el siguiente middleware para lograr algún tipo de commit / rollback centralizado después de que un controlador finalice la ejecución:

public class UnitOfWorkMiddleware
{
    private readonly RequestDelegate _next;
    private readonly MyDbContext _dbContext;
    private readonly ILogger _logger;

    public UnitOfWorkMiddleware(RequestDelegate next, MyDbContext dbContext, ILoggerFactory loggerFactory)
    {
        _next = next;
        _dbContext = dbContext;
        _logger = loggerFactory.CreateLogger<UnitOfWorkMiddleware>();
    }

    public async Task Invoke(HttpContext httpContext)
    {
        await _next.Invoke(httpContext);
        _logger.LogInformation("Saving changes for unit of work if everything went good");
        await _dbContext.SaveChangesAsync();
    }
}

y este middleware es inmediatamente anterior a MVC6 en la tubería

//inside Configure(IApplicationBuilder app) in Startup.cs
app.UseMiddleware<UnitOfWorkMiddleware>();
app.UseMvcWithDefaultRoute();

La instancia de DbContext en mi Middleware no es la misma que la instancia que se inyecta durante la vida útil de MVC.

¿Se espera esto? ¿No debería un DbContext tener un alcance a una solicitud http? ¿Es posible lograr lo que estaba tratando de lograr?

El plan B sería usar unFiltro global MVC 6 (si puedo encontrar alguna documentación sobre cómo hacer esto). Supongo que al ser parte del marco MVC 6, la instancia DbContext inyectada será la misma.

Respuestas a la pregunta(1)

Su respuesta a la pregunta