c# - change OwinContext dbContext on runtime -
i need run-time change dbcontext request.getowincontext() use specific connectionstring it's not working.
i've dbcontex class accept default connectionstring web.config or specified 1 this:
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; } } then when new user registering i've tried change owin's default dbcontext 1 new connectionstring this:
[allowanonymous] [route("create")] public async task<ihttpactionresult> createuser(createuserbindingmodel createusermodel) { (...) //get specific connectionstring var connectionstring = cservice.getcompanyconnectionstring(createusermodel.company); //generate new dbcontext var appdbcontext = applicationdbcontext.create(connectionstring); //get owincontext var context = httpcontext.current.getowincontext(); //replace dbcontext inside owincontext context.set<applicationdbcontext>("applicationdbcontext", appdbcontext); (...) } until , including appdbcontext works expected on debuging, after setting context.set<applicationdbcontext>... context still using default one.
i've tried using var context = request.getowincontext(); , setting directly httpcontext.current.getowincontext().set<applicationdbcontext>("applicationdbcontext", appdbcontext); , request.getowincontext().set<applicationdbcontext>("applicationdbcontext", appdbcontext); same result.
the problem here first string trying use when setting, line
context.set<applicationdbcontext>("applicationdbcontext", appdbcontext); must changed to
context.set<applicationdbcontext>(appdbcontext);
Comments
Post a Comment