How to get ApplicationDbContext out of the Owin pipeline

asp.net, asp.net-identity, asp.net-identity-2, owin

Solution

And the answer (apparently) is... You need to add this using statement to get it to work:

using Microsoft.AspNet.Identity.Owin;

so a complete example would look like:

using Microsoft.AspNet.Identity.Owin;

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var context = HttpContext.GetOwinContext().Get<ApplicationDbContext>();
        DoSomething(context); // Use the context object; do not dispose it!

        return View();
    }
}

Problem

This has to be simple, but I'm going bug-eyed trying to find the answer. How does a controller action get a reference to the per-request ApplicationDbContext that was stashed in the Owin pipeline? EDIT: Ok, I think I'm getting closer... or maybe not... All of my Googling seems to lead to this blog post, which sez to use: ``` var dbContext = context.Get<ApplicationDbContext>(); ``` where context is apparently an instance of `Microsoft.Owin.IOwinContext`. So I tried: ``` var db = HttpContext.GetOwinContext().Get<ApplicationDbContext>(); ``` But the `Get<T>` method requires a `string key` parameter. :(

Original source