gpt4 book ai didi

c# - 在运行时更改 OwinContext dbContext

转载 作者:行者123 更新时间:2023-11-30 17:41:29 26 4
gpt4 key购买 nike

我需要在运行时更改 dbContext对于 Request.GetOwinContext()使用特定的 connectionString但它不起作用。

我有一个 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);但我总是得到相同的结果。

最佳答案

这里的问题是我在设置时尝试使用的第一个字符串,所以这一行

context.Set<ApplicationDbContext>("ApplicationDbContext", appDbContext);

必须改为

context.Set<ApplicationDbContext>(appDbContext);

关于c# - 在运行时更改 OwinContext dbContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32864514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com