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

Change Database Source Depending on Login Credentials

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

例如,客户端 1 登录,使用正确的 Consumer Key 和 Client Secret 进行更新。此客户端可以访问 Database1。

客户端 2 登录。已适当更新。现在,数据库 1 以编程方式切换为数据库 2。

有没有一种方法可以根据登录以编程方式更改数据库源?


快速编辑我的post。在本例中,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>

然后在处理用户登录时简单地检索您需要的值:

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

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

只需像这样在 .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>

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

基本上,听起来您可能不想在每次添加新 client/database 时都更新 web.config。您需要为 web.config 中的连接字符串存储一个 模板,而不是字符串本身。