从同一MVC应用程序查询不同的数据库

本文关键字:数据库 查询 应用程序 MVC | 更新日期: 2023-09-27 18:22:16

我有一个SQL Server数据库(称之为"登录"数据库),其中包含多个客户端的记录,最重要的是该客户端的数据库名称。我这个网络应用程序的登录屏幕上有标准的用户名和密码字段,还有一个"唯一ID"字段。问题就在这里:为了解决这个问题,这里有一个例子。

我的数据库结构

  • Logins(此处为客户的唯一登录代码和数据库名称)
  • Customer_1
  • Customer_2
  • 等等

要求

登录后,我需要根据登录数据库验证客户的唯一代码,然后以某种方式坚持这样一个事实,即在经过身份验证的会话期间,进一步的查询必须针对他们自己的数据库运行,这就是我陷入困境的地方。

首先,这可能吗?我不想为每个可能的客户端数据库存储连接字符串——我想在登录时解决这个问题。

其次,如果可能的话,我将如何使用实体框架和ASP.NET MVC4来实现这一点?

从同一MVC应用程序查询不同的数据库

我最近在一个项目中这样做了。我们使用了两个数据上下文——MasterContext和ClientContext,其中有一个工厂根据用户生成ClientContext,类似

public static class ClientContextFactory
{
    public static MyDbContext(string userName)
    {
        //look up the user to find his database
        //build connectio string based on users database
        return new MyDbContext(userConnectionString);
    }
}