我的 webconfig 中有 3 种类型的连接字符串,我们将它们用于应用程序的各个部分,例如 LDAP 登录、相关但未集成的数据库的数据库状态以及 EF DB First 连接字符串 (EDMX(
我希望以最经济的方式解析连接字符串数据。
目前<add name="ADConnectionString" connectionString="LDAP://something.somewhere.something:389" />
<add name="DEV" connectionString="data source=SOURCE;initial catalog=Test;integrated security=False;MultipleActiveResultSets=True;App=EntityFramework;User ID=tech;Password=*********;" providerName="System.Data.SqlClient" />
<add name="ConfigEntities" connectionString="metadata=res://*/Data.Config.csdl|res://*/Data.Config.ssdl|res://*/Data.Config.msl;provider=System.Data.SqlClient;provider connection string="data source=SOURCE;initial catalog=CATALOG;persist security info=True;user id=user;password=*********;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient" />
为了处理连接字符串,我发现我需要尝试捕获两个部分才能完成该过程
首先,try catch 允许我们安全地跳过 LDAP 连接字符串(应该在没有 try catch 的情况下跳过它
其次,似乎我需要转换字符串才能从中检索数据......
try
{
var ssb = new SqlConnectionStringBuilder((((ConnectionStringSettings)c).ConnectionString));
}
与
try{
var ssb = new SqlConnectionStringBuilder((new EntityConnectionStringBuilder(((ConnectionStringSettings)c).ConnectionString).ProviderConnectionString));
}
从那里代码是相同的
有没有人对在运行代码之前确定连接字符串类型的最佳方法有想法,以防止需要依赖 try catches。
可以从ConnectionStringSettings
获取连接字符串的name
属性。使用name
属性标识连接字符串的类型。
您已经ConnectionStringSettings
对象,该对象是c
(基于您的代码片段(。
检查如下所示的name
属性以避免try
语句。
if(c.Name.Equals("ADConnectionString")) //ADConnectionString
{
}
else if(c.Name.Equals("DEV")) //DEV
{
}
else //ConfigEntities
{
}