How to get ApplicationDbContext out of the Owin pipeline

强颜欢笑 提交于 2019-12-09 14:48:09

问题


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. :(


回答1:


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();
    }
}


来源:https://stackoverflow.com/questions/23881489/how-to-get-applicationdbcontext-out-of-the-owin-pipeline

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!