如何从Owin管道中获取ApplicationDbContext

Bob*_*lth 12 asp.net owin asp.net-identity asp.net-identity-2

这必须很简单,但我会瞎眼睛试图找到答案.控制器操作如何获取对Owin管道中存储的每请求ApplicationDbContext的引用?

编辑:好的,我想我越来越近......或者可能不是......我所有的谷歌搜索似乎都引出了这篇博文,其中包括:

var dbContext = context.Get<ApplicationDbContext>();
Run Code Online (Sandbox Code Playgroud)

上下文显然是一个实例Microsoft.Owin.IOwinContext.所以我尝试过:

var db = HttpContext.GetOwinContext().Get<ApplicationDbContext>();
Run Code Online (Sandbox Code Playgroud)

但该Get<T>方法需要一个string key参数.:(

Bob*_*lth 29

答案(显然)是...... 您需要添加此using语句才能使其工作:

using Microsoft.AspNet.Identity.Owin;
Run Code Online (Sandbox Code Playgroud)

所以一个完整的例子看起来像:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)