多数据库连接字符串:将其存储在我的应用程序中

Multi-database connection string: where store it in my application

我有具有相同架构的不同数据库。我需要根据已连接的客户端连接到其中一个。 例如,如果 ClientA 已连接,我必须连接到 DatabaseA;如果 ClientB 已连接,我必须连接到 DatabaseB; 现在我有一个多层应用程序:一个表示层、一个服务层和一个存储层。 通过一些逻辑,我获得了正确的连接字符串!

所以..我现在需要什么。

我不知道在哪里存储该客户端的连接字符串!我在会话中思考。但是如果我将它存储在会话中,我必须在我对存储库层进行的每次调用中传递它,因为会话在存储库中不可见。 我认为这是我能采取的最糟糕的解决方案。

我希望选定的连接字符串只是该客户端全局变量中的存储库层。

建议? 谢谢

可能对您来说最好的方法是拥有一个数据库,其中与用户相关的 table 具有指向用户 table.

的外键

您可以从 this Microsoft article. Here is a whole topic about this subject: asp.net mvc multiple connection strings

了解更多关于多租户架构的信息

您为什么不在您的应用程序中创建一个 ConnectionString 存储库,并根据您获得正确 CS 的逻辑。类似于查找 table,静态的东西。 如果您想修改 ConnectionStrings,您可以使用 app.config 并在需要时随时从那里获取它们。

如果您想保留网站的全局数据 - 您可以在应用程序 class 中存储任何数据,您可以通过以下方式查看更多详细信息 link: http://www.asp.net/web-forms/overview/data-access/caching-data/caching-data-at-application-startup-cs 如果您有任何单独的应用程序部分,您可以将共享数据保存在 xml 文件中并在每个应用程序域中创建 ConfigManager 或者您可以使用数据库 table.

已经进行了这么多讨论,我想根据我的经验分享我的想法。

始终建议在存储库层为正在连接的客户端解析连接字符串。然而,这可以缓存在应用程序中。

您的业务层将包含驻留在应用程序中的所有业务实体,并且可以在应用程序的所有层中访问。

如果连接字符串解析机制驻留在这一层[当然有缓存],那将是一个优雅的设计并且易于使用。