C# 登录时将不同的用户指向不同的数据库

C# 登录时将不同的用户指向不同的数据库,c#,sql,asp.net-mvc-4,dynamic,database-connection,C#,Sql,Asp.net Mvc 4,Dynamic,Database Connection,我需要为不同的用户提供不同的连接字符串。有几个线程呈现了类似的场景,但没有一个线程有解决方案——如何在用户登录时建立到数据库的动态连接 我已经能够动态地获取连接字符串,但不太确定如何设置它/它们(并为不同的用户保持不同的字符串处于活动状态) 我有一个ClientDbContext模型,其中 namespace MyProject.Models { public class ClientDbContext : DbContext { public Client

我需要为不同的用户提供不同的连接字符串。有几个线程呈现了类似的场景,但没有一个线程有解决方案——如何在用户登录时建立到数据库的动态连接

我已经能够动态地获取连接字符串,但不太确定如何设置它/它们(并为不同的用户保持不同的字符串处于活动状态)

我有一个ClientDbContext模型,其中

namespace MyProject.Models
{    public class ClientDbContext : DbContext
            {
    public ClientDbContext(string DefaultConnection)
                  : base("DefaultConnection")
{
}
在我的客户控制器中

using MyProject.Models;

    namespace MyProject.Controllers
    {
        public class ClientController : Controller
        {
            private ClientDbContext db = new ClientDbContext("DefaultConnection");
大局在这里。。。。目标是在用户登录时动态设置到特定数据库(目录)的连接。可能有几十个不同的数据库

进程(当前正在工作:-)

  • 用户获取登录页面(帐户)
  • 输入登录信息(帐户)
  • 登录控制器(帐户)检查有效输入;匹配项
    用户输入的字符串更改为用户中以前输入的字符串
    轮廓并将用户输入的字符串与的预期名称匹配 数据库(在dbStrings表中)
  • 我可以在登录期间为用户检索特定的数据库名称和字符串。我创建了一条临时错误消息来显示名称和字符串

    接下来会发生什么

    所选字符串应用于为用户创建db连接。 我被这件事缠住了……

    然后,用户被重定向到客户机(Clients)的索引——这是有效的

    所选连接将保留给用户(直到用户关闭浏览器或注销-结束会话)。 不太确定如何设置此…


    其他用户可以使用不同的凭据登录。系统必须为每个经过身份验证的用户保持离散的连接

    可能重复@Scott。。。不完全一样。这是我评论的帖子之一。为50多个字符串设置类是不可行的。“从db获取”解决方案是我在这里看到的。这是最好的。但是没有任何东西能够解决具体的错误信息——它更多的是一种理论/策略方法,它给出了一个错误“名称”DefaultConnection“在当前上下文中不存在。这似乎是推荐的解决方案之一。我错过了什么,它不工作了?嗯。。。引号'private ClientDbContext db=new ClientDbContext(“DefaultConnection”);'仍在寻找如何设置连接。@Terri-数据库名称是否与输入的用户名有关?是的。我有一个用于身份验证(Identity)的UserProfile表。它在我的DataStrings表中包含一个DbID(FK)值。当用户注册时(管理功能),有一个下拉列表,用于选择用户将有权访问的数据库。它从我的DataStrings表中获取DbID(PK)来显示数据库的名称。我正在检查1.2用户条目。用户表和3。登录期间匹配的数据字符串表(以及用户名和密码)。当所有3个匹配时,我得到关联的连接字符串(DbID-DataStrings)。到目前为止,我已经开始工作了。