0

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

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

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

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

建议?谢谢

4

4 回答 4

1

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

于 2015-03-17T12:25:55.157 回答
1

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

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

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

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

于 2015-03-28T15:53:39.277 回答
0

可能对您来说最好的方法是拥有一个数据库,其中与用户相关的表具有用户表的外键。

您可以从这篇Microsoft 文章中了解有关多租户架构的更多信息。这是关于这个主题的完整主题:asp.net mvc multiple connection strings

于 2015-03-17T11:06:54.290 回答
0

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

于 2015-03-17T11:07:33.710 回答