我有一个使用EF Core的ASP.NET Core 2.2项目,该项目由多个客户使用。每个客户都有自己的数据库,这些数据库具有由IRepository管理的完全相同的架构(动态加载的DBset)。这是多个子域项目,我想登录到account.example.com上的用户,经过身份验证的用户将重定向到网站B,并由Cookie身份验证授权。
网站A,网址为www.example.com
网站B,位于site.example.com-(我的应用程序)
网站C,位于account.example.com-(ASP.NET身份-.Net Core 2.2)
public MydbContext(string dbName)
{
this.Database.GetDbConnection().ChangeDatabase(dbName);
}
但是它获得了默认连接字符串,该字符串已添加到startup.cs类的ConfigureServices中。如何使用Session从 HttpContext.User 中的Cookie存储当前用户的连接字符串,并更改每个查询的DBContext连接字符串。
答案 0 :(得分:0)
您可以将连接字符串传递给构造函数并使用它。 EF Core中的模式如下所示:
public class Db : DbContext
{
readonly string connectionString;
public Db(string connectionString)
{
this.connectionString = connectionString;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(connectionString);
base.OnConfiguring(optionsBuilder);
}