【问题标题】:Owin ApplicationDbContext did not updateOwin ApplicationDbContext 没有更新
【发布时间】:2017-08-01 09:55:56
【问题描述】:

我想根据用户在登录屏幕输入的代码在运行时更改我的连接字符串。我做了以下

ApplicationDbContext

 public static ApplicationDbContext Create(string scCode){
        return new ApplicationDbContext("name=GEContext_" + scCode);
    } 

在登录时,我将连接字符串更改如下

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            try
            {
                System.Web.HttpContext.Current.Session["SchoolCode"] = model.SchoolCode;

                var appDbContext = ApplicationDbContext.Create(model.SchoolCode);
                HttpContext.GetOwinContext().Set<ApplicationDbContext>(appDbContext);
 ....
   }
 }
}

现在它仍然指的是原始数据库...我错过了什么?

附:有关历史/详细信息,请考虑 this post

【问题讨论】:

    标签: asp.net-mvc-4 asp.net-identity owin


    【解决方案1】:

    嗨,我从here得到了答复

    问题出在 ApplicationDbContext 中,我们需要指定默认数据库,而在我的场景中,必须更改默认数据库。 所以我改变了它使用

     var appDbContext = ApplicationDbContext.Create(System.Web.HttpContext.Current.Session["SchoolCode"].ToString());//new ApplicationDbContext("name=GEContext", System.Web.HttpContext.Current.Session["SchoolCode"].ToString());
    
     HttpContext.GetOwinContext().Set<ApplicationDbContext>(appDbContext);
     HttpContext.GetOwinContext().Set<ApplicationUserManager>(new ApplicationUserManager(new UserStore<ApplicationUser, Role, int, UserLogin, UserRole, UserClaim>(appDbContext)));
    
     return HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      相关资源
      最近更新 更多