Мне нужно изменить время работы dbContext
для Request.GetOwinContext()
, чтобы использовать конкретный connectionString
, но он не работает.change OwinContext dbContext во время выполнения
У меня есть dbContex
class
принять по умолчанию connectionString
от Web.Config
или указанный один такой:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("AuthEntities", throwIfV1Schema: false)
{
Configuration.ProxyCreationEnabled = false;
Configuration.LazyLoadingEnabled = false;
}
public ApplicationDbContext(string sConnectionString)
: base(sConnectionString, throwIfV1Schema: false)
{
Configuration.ProxyCreationEnabled = false;
Configuration.LazyLoadingEnabled = false;
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public static ApplicationDbContext Create(string sConnectionString)
{
ApplicationDbContext test = new ApplicationDbContext(sConnectionString);
return test;
}
}
тогда, когда новый пользователь регистрируется я пытался изменить в Owin по умолчанию DbContext для одного с новым ConnectionString, как это:
[AllowAnonymous]
[Route("create")]
public async Task<IHttpActionResult> CreateUser(CreateUserBindingModel createUserModel)
{
(...)
//get the specific connectionString
var connectionString = cService.GetCompanyConnectionString(createUserModel.Company);
//generate new dbContext
var appDbContext = ApplicationDbContext.Create(connectionString);
//get OwinContext
var context = HttpContext.Current.GetOwinContext();
//replace the DbContext inside OwinContext
context.Set<ApplicationDbContext>("ApplicationDbContext", appDbContext);
(...)
}
до и включая appDbContext
все работает, как ожидалось, но на отладки, после установки context.Set<ApplicationDbContext>...
context
по-прежнему использует значение по умолчанию.
Я также пробовал использовать var context = Request.GetOwinContext();
и устанавливал непосредственно как HttpContext.Current.GetOwinContext().Set<ApplicationDbContext>("ApplicationDbContext", appDbContext);
и Request.GetOwinContext().Set<ApplicationDbContext>("ApplicationDbContext", appDbContext);
, но всегда получаю тот же результат.
Я считаю, что это происходит потому, что '' .С является Слабо типизированный метод? –
Привет, я сделал то же самое, но usermanager все еще использует старый dbcontext..can u help here: https://stackoverflow.com/questions/45315809/how-to-change-database-name-in-dbcontext-connection- строка-в-выполнения – Samra