在具有两个数据源like或condition的应用程序中,是否可以使用两个连接字符串具有相同的名称。
<add name="DefaultConnection" connectionString="Data Source=serverName|serverIpAddress;Initial Catalog=DatabaseName;User=name;Password=Password;"
providerName="System.Data.SqlClient" />
任何人都可以帮我这样做。
答案 0 :(得分:6)
这是不可能的,因为ConnectionStrings是在KeyValuePair中维护的,并且名称是关键。
请告诉我们您为什么需要这样的情况,然后我们可以帮助您。
答案 1 :(得分:2)
如果您的两个数据库配置了SQL Server Mirroring,那么您实际上可以在连接字符串中指定备份服务器。您可以使用Failover Partner
执行此操作:
Data Source=Primary_Server;Failover Partner=Secondary_Server; ... other stuff...
然后,您只需使用两个服务器地址编辑现有配置字符串,如果主服务器不可用,框架将自动连接到辅助服务器。
关于Failover Partner
的使用有一些特性(从我读过的,我自己没有使用过),所以我建议在实施之前仔细阅读它。
如果您的数据库没有镜像,您将不得不自己实现故障转移,可能是通过抽象获取数据库连接。
在配置中指定两个不同的连接字符串(主要和次要),然后实现某种连接字符串服务,该服务根据您的条件返回相应的连接字符串(即测试主要,如果失败,则返回次要,否则返回主要或者你想要的任何东西。
请记住,在测试字符串后,您的服务器可能会脱机,但在使用它之前,这是一个相当大的优势。如果您需要在这种情况下保持功能,请记住这一点。
答案 2 :(得分:1)
不,你不能有两个同名的连接字符串。 所以,如果你能得到这个代码的结果:
var connectionString=ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
KeyValuePair对象中的连接字符串存储。
应用程序可以选择在一个中指定连接名称 提供所需的应用程序配置文件 关键字/值连接字符串值。在这种情况下,你不能 直接在连接字符串中提供它们。 Name关键字不是 允许在配置文件中。
当Name关键字未包含在连接字符串中时,a 需要提供商关键字的非空值。
此关键字与所有其他连接互斥 字符串关键字。