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

时间:2014-09-16 20:11:20

标签: c# sql-server entity-framework asp.net-mvc-4

我的情况是我有一个SQL Server数据库(称之为我的"登录"数据库),其中包含许多客户端的记录,最重要的是数据库名称是什么那个客户。我的此Web应用程序的登录屏幕具有标准用户名和密码字段以及"唯一ID"场也是。这就是问题所在:在这里尝试清除这个例子。

我的数据库结构

  • Logins(客户的唯一登录代码及其数据库名称)
  • Customer_1
  • Customer_2
  • 等...

要求

登录后,我需要针对登录数据库验证客户的唯一代码,然后以某种方式坚持以下事实:经过身份验证的会话的持续时间的进一步查询必须针对他们自己的数据库运行,这就是我&# 39;被卡住了。

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

其次,如果有可能,我将如何使用Entity Framework和ASP.NET MVC4进行此操作?

1 个答案:

答案 0 :(得分:0)

我最近在一个项目中做到了。我们在2个数据上下文中使用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);

    }
}