如何在许多连接字符串之间切换?

时间:2014-09-08 08:09:32

标签: c# asp.net entity-framework web-config

我没有此主题的任何代码。我有一个"问题"可以访问许多数据库。我写了一个程序,你可以登录并做一些事情(创建报告等)。 Bevore你登录,程序应该在本地数据库中查看用户所属的系统。之后,连接字符串应该更改以获得与此系统的连接。

我需要这个,因为这个报告应用程序在我们的本地服务器上,但是用户的详细数据和用于创建报告的每个数据都在客户服务器上。 一步一步:

  1. 登录数据中的用户类型
  2. 程序应检查系统中是否有本地数据库中的用户(例如带有" user1&#34的表格; - " system2")
  3. 程序应更改constring或应使用此系统的constring
  4. 之后,此系统上的登录将以代码
  5. 开始
  6. 用户已登录其系统
  7. 我从来没有做过这样的事情,而且我多次读过它不可能在运行时更改constring。所以我想我可以将每个字符串写入web.config并告诉他

    If(user.system == 3){ use constring3 };
    

    我真的不知道如何处理这件事。

    感谢您的支持。

    干杯戴夫

2 个答案:

答案 0 :(得分:0)

对于这种情况,常见的方法是使用像Ninject这样的IoC容器。 想法是只有一个连接字符串(可能包含在一个类中),它被注入到你的ViewModels中。

用户登录后,您将向该容器注册此连接字符串的正确实例。

阅读Tutorial以了解其工作原理。

答案 1 :(得分:0)

所以我遇到了一个新问题。我在配置文件中存储了所有可能的constring,我创建了一个类,我从中请求所需的字符串。

if (usersystem == 1)
   string db = ConfigurationManager.ConnectionStrings["DB1"].ConnectionString;
return db;

一切正常。因此,每当我打开一个新的var contex = new Entities()连接时,我都会给他一些像var context = new Entities(constring)这样的信息。一切都很好,但是当我开始登录时,它会跳回旧的constring。我一步一步调试,代码永远不会改变constring,上下文仍然显示新的,但它隐藏着旧的隐藏。这是我的新问题,但我只是一步之遥来解决它。