ASP.NET Identity 2.0。 DbContext对象的终身管理

时间:2015-12-03 11:34:49

标签: c# asp.net asp.net-mvc asp.net-identity-2

根据本文http://blogs.msdn.com/b/webdev/archive/2014/02/12/per-request-lifetime-management-for-usermanager-class-in-asp-net-identity.aspx(默认的ASP.NET MVC 5模板实现此方法),每个请求应创建一次 ApplicationUserManager 对象。这意味着,为每个请求调用 ApplicationUserManager.Create(IdentityFactoryOptions选项,IOwinContext上下文) 方法。但是这个方法有这个代码:

   public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) 
    {
        var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>()));
        ...
    }

此代码表示每个请求也会创建 ApplicationDbContext 对象。这就是为什么,我有几个问题。

  1. 为每个请求创建新的 ApplicationDbContext 对象是否正常?
  2. 如果为每个请求创建 ApplicationDbContext 不是一个好习惯,我该如何避免这样做?
  3. 事实上,我可以用Owin替换DI容器并使用 CreatePerOwinContext GetOwinContext()。Get() < / strong>方法?事实上,基于OWIN的方法可以取代控制器的依赖注入,但我无法在OWIN中找到终身管理
  4. 如果我不能这样做,我如何结合基于OWIN的ASP.NET身份和DI容器?
  5. 更新

    我忘了提一下,我计划使用MongoDb和mongosharp驱动程序来存储数据。 Thay说,我可以为所有应用程序保留一个连接

0 个答案:

没有答案