SQL VS EF VS LDAP连接字符串TYPE测试

时间:2017-08-14 18:12:23

标签: c# sql entity-framework ldap connection-string

我的webconfig中有3种类型的连接字符串,我们将它们用于应用程序的各个部分,例如LDAP登录,相关但非集成的DB的DB状态,以及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=&quot;data source=SOURCE;initial catalog=CATALOG;persist security info=True;user id=user;password=*********;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient" />

为了处理连接字符串,我发现我需要尝试捕获两个部分才能完成该过程

首先,try catch允许我们安全地跳过LDAP连接字符串(应该在没有try catch

的情况下跳过它)

第二,似乎我需要转换字符串以从中检索数据......

try
{
    var ssb = new SqlConnectionStringBuilder((((ConnectionStringSettings)c).ConnectionString));
}

VS

try{
        var ssb = new SqlConnectionStringBuilder((new EntityConnectionStringBuilder(((ConnectionStringSettings)c).ConnectionString).ProviderConnectionString));
}

从那里代码是相同的

有没有人想过在运行代码之前确定连接字符串的类型的最佳方法,以防止需要依赖try catch。

1 个答案:

答案 0 :(得分:0)

您可以从name获取连接字符串的ConnectionStringSettings属性。使用name属性来标识连接字符串的类型。

您已拥有ConnectionStringSettings个对象,即c(基于您的代码段)。

检查name属性,如下所示,以避免try声明。

if(c.Name.Equals("ADConnectionString")) //ADConnectionString
{

}
else if(c.Name.Equals("DEV")) //DEV
{    

}
else //ConfigEntities
{

}