根据登录凭据更改数据库源

时间:2016-01-11 16:19:31

标签: c# .net database web-config inversion-of-control

我是一名新开发人员,我正在开发一个使用SalesForce REST API的项目。我的.Net项目的一部分涉及根据登录凭据更新web.config和数据库。

例如,客户端1登录后,将使用正确的使用者密钥和客户端密钥进行更新。此客户端可以访问Database1。

客户端2登录。已正确更新。现在,Database1以编程方式与Database2一起切换。

有没有办法以编程方式更改数据库源,具体取决于登录?

快速修改我的帖子。在这种情况下,Client1和Client2是两个独立的公司,不应该访问彼此的数据库。我希望能够为两个客户端使用相同的应用程序,但更新web.config和使用的数据库,具体取决于登录的公司。

3 个答案:

答案 0 :(得分:0)

您无需使用数据库数据更新web.config,具体取决于登录凭据。您可以在web.config文件中包含所需的所有连接字符串:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="database1" connectionString="..." />
    <add name="database2" connectionString="..." />
  </connectionStrings>
</configuration>

然后只需检索处理用户登录时所需的值:

var connectionString = ConfigurationManager.ConnectionStrings["database1"];

var connectionString = ConfigurationManager.ConnectionStrings["database2"];

答案 1 :(得分:0)

只需在.config文件中添加2个条目,就像这样

<?xml version="1.0" encoding="utf-8" ?>
 <configuration>
   <connectionStrings>
      <add name="DbConn" connectionString="Data Source=someDataSrc;User Id=someuderId;Password=somePassWord;" />
      <add name="DbConn2" connectionString="Data Source=someDataSrc; User Id=someuderId; Password=somePassWord" />
   </connectionStrings>
</configuration>

答案 2 :(得分:0)

如果您使用的是L2S或EF,则可以在应用程序中创建一个继承L2S / EF上下文类的类,然后使派生类的构造函数根据登录信息确定要使用的连接字符串。初始化自己。然后,您可以根据需要将该派生类用作数据源。

基本上,您可能会遇到每次添加新客户端/数据库时都不想更新web.config的情况。您需要在web.config中为连接字符串存储模板,而不是字符串本身。