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

C# 根据登录凭据更改数据库源,c#,.net,database,web-config,inversion-of-control,C#,.net,Database,Web Config,Inversion Of Control,我是一名新的开发人员,正在从事一个利用SalesForce REST API的项目。我的.Net项目的一部分涉及根据登录凭据更新web.config和数据库 例如,客户端1登录时,将使用正确的使用者密钥和客户端密钥更新。此客户端可以访问数据库1 客户端2登录。适当更新。现在,Database1以编程方式与Database2切换 有没有办法根据登录名以编程方式更改数据库源 快速编辑我的帖子。在本例中,Client1和Client2是两个独立的公司,它们不应该访问彼此的数据库。我希望能够为两个客户

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

例如,客户端1登录时,将使用正确的使用者密钥和客户端密钥更新。此客户端可以访问数据库1

客户端2登录。适当更新。现在,Database1以编程方式与Database2切换

有没有办法根据登录名以编程方式更改数据库源



快速编辑我的帖子。在本例中,Client1和Client2是两个独立的公司,它们不应该访问彼此的数据库。我希望能够为两个客户端使用相同的应用程序,但根据登录的公司更新web.config和使用的数据库

您不需要根据登录凭据使用数据库数据更新web.config。您可以在web.config文件中包含所需的所有连接字符串:

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


只需在.config文件中添加两个条目,如下所示

<?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>

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


基本上,您可能不希望在每次添加新客户机/数据库时都更新web.config。您需要将连接字符串的模板存储在web.config中,而不是字符串本身。

如果方法不对,您不会在不同的用户登录时更改web.config,您可以根据登录的用户从web.config中选择不同的值。您仍然可以这样做,而无需使用两个不同的.config文件。。从逻辑上讲,如果登录的客户端名称是
ClientXyz
,则将它们指向第一个db条目,如果不是,则将它们指向第二个db条目。这很简单,至少可以说您用于数据访问的是什么?LinqtoSql、实体框架、动态SQL或其他什么?@JustinGould您的评论与web.config或app.config文件有什么关系。。?只是好奇
var connectionString = ConfigurationManager.ConnectionStrings["database2"];
<?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>