gpt4 book ai didi

c# - 如何使用可变连接字符串创建 IdentityDbContext?

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

有了我自己的 IdentityDbContext 实现,我希望它能够根据用户的选择连接到自定义数据库。所以我为默认数据库和用户选择的数据库创建了 2 个构造函数。

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("Users", throwIfV1Schema: false)
{
//Aici am adaugat
Configuration.ProxyCreationEnabled = true;
Configuration.LazyLoadingEnabled = true;
}

public ApplicationDbContext(String connectionName)
: base(connectionName, throwIfV1Schema: false)
{
//Aici am adaugat
Configuration.ProxyCreationEnabled = true;
Configuration.LazyLoadingEnabled = true;
}
}

我现在的问题是如何将自定义 connectionName 引入类。

在此方法中调用了构造函数:

public static string conn;
public static ApplicationDbContext Create()
{
if(conn == null)
return new ApplicationDbContext();
else
return new ApplicationDbContext(conn);
}

使用 session 变量是不可能的,因为在此上下文中 HttpContext.Current 为空。向 Create 方法添加字符串参数也是不可能的,因为就在 Startup 类中,在任何用户选择之前,Owin 决定使用默认数据库:

app.CreatePerOwinContext(() => ApplicationDbContext.Create());

即使在那里传递参数也无济于事,因为用户不会选择它。

我该怎么办?

非常感谢!

最佳答案

我会使用 cookie。

试试这个:

Startup.Auth.cs

app.CreatePerOwinContext<ApplicationDbContext>(ApplicationDbContext.Create);

ApplicationDbContext.cs

public static ApplicationDbContext Create(IdentityFactoryOptions<ApplicationDbContext> options, IOwinContext context)
{
// Do things here.
string choice = context.Request.Cookies...;
// Make sure that the cookie is correct.
return new ApplicationDbContext(connectionName);
}

关于c# - 如何使用可变连接字符串创建 IdentityDbContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40235098/

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