c# - 从同一个 MVC 应用程序查询不同的数据库

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

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

我的数据库结构

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

要求

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

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

其次,如果可能的话,我将如何使用 Entity Framework 和 ASP.NET MVC4 来做到这一点?

最佳答案

我最近在一个项目中这样做了。我们使用了 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);

    }
}

关于c# - 从同一个 MVC 应用程序查询不同的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25877595/

相关文章:

c# - 将 C# Ctor 翻译成 Vb.Net 等价物

c# - asp.net 应用程序在本地主机上识别用户,但在没有硬编码用户名/密码的情况下无法在服务器上识别用户

c# - 为什么 Visual Studio 2012 不从我的 MySql 数据库生成 EDM 图表

sql - Entity Framework 通过字符串sql过滤数据

c# - 从枚举填充 ComboBox

c# - 在 sql for asp.net gridview 中使用 ROW_NUMBER() 自定义分页

c# - 如何在文本框中创建发票编号并在单击按钮时自动递增?

sql-server - T-SQL 查询显示表定义?

c# - 分解具有许多关系的大型 DbContext 的方法

c# - 如何使用 HTML 敏捷包选择嵌套元素?