Owin ApplicationDbContext没有更新

时间:2017-07-27 03:30:05

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

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

ApplicationDbContext

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

登录时我更改了connectionstring,如下所示

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

现在它仍指的是原始数据库......我缺少什么?

P.S。有关历史/详细信息,请考虑this post

1 个答案:

答案 0 :(得分:0)

您好我从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>();