User1312693872 posted
Hi,bernardj1905
Is there some example about setting the dbcontext connection string after identity user logs in?
You can create a dbcontext factory and call different connection string according to the login user:
public static class DbContextFactory
{
public static Dictionary<string, string> ConnectionStrings { get; set; }
public static void SetConnectionString(Dictionary<string, string> connStrs)
{
ConnectionStrings = connStrs;
}
public static MyDbContext Create(string connid) //judge which connectionstring to use by connid, from Configure()
{
if (!string.IsNullOrEmpty(connid))
{
var connStr = ConnectionStrings[connid];
var optionsBuilder = new DbContextOptionsBuilder<MyDbContext>();
optionsBuilder.UseSqlServer(connStr);
return new MyDbContext(optionsBuilder.Options);
}
else
{
throw new ArgumentNullException("ConnectionId");
}
}
}
and in Configure():
Dictionary<string, string> connStrs = new Dictionary<string, string>();
connStrs.Add("DB1", "Server=***;Database=***;***;MultipleActiveResultSets=true");
connStrs.Add("DB2", Your connection string);
DbContextFactory.SetConnectionString(connStrs);
then the way to use:
if(user is login)
{...
var dbContext = DbContextFactory.Create("DB1");
var model = dbContext.Gate.ToList();
//......as usual
}
if(user is **)
{
...
var dbContext = DbContextFactory.Create("DB2");
...
}
Best Regards,
Jerry Cai