从Web.Config获取多个connectionStrings到字典c#没有循环

Posted

技术标签:

【中文标题】从Web.Config获取多个connectionStrings到字典c#没有循环【英文标题】:Get multiple connectionStrings from Web.Config to a dictonary c# without loop 【发布时间】:2020-12-09 11:29:12 【问题描述】:

在我的 MVC 应用程序中,我的 web.config - 连接字符串部分中有 3 个连接字符串。 没有循环我想将配置中指定的所有连接字符串 字典。 我在下面使用循环尝试过。

 foreach (var item in Environments)

 connString = ConfigurationManager.ConnectionStrings["[string.Format("ConnectionString_0",item )].ToString();
 Dictionary.add(item , connString );                  


------------ IN Web.config

<configuration>
<connectionStrings>

 <add name="ConnectionString_Dev" connectionString="Data Source=xxxxxxxx;Initial Catalog=yyyy;Integrated Security=True" providerName="System.Data.SqlClient" />

 <add name="ConnectionString_PreProd" connectionString="Data Source=xxxxxxxx;Initial Catalog=yyyy;Integrated Security=True" providerName="System.Data.SqlClient" />
  
 <add name="ConnectionString_PreStage" connectionString="Data Source=xxxxxxxx;Initial Catalog=yyyy;Integrated Security=True" providerName="System.Data.SqlClient" /> 

</connectionStrings>
</configuration>

【问题讨论】:

LINQ 在内部使用循环,所以请不要假设 linq 没有循环 我真的很好奇“无循环”约束的来源。它经常显示为对问题的任意要求。有没有人在那里教学循环对性能不利或类似的东西?关键是,如果您有某种集合,则必须对其进行迭代。如果你不这样做,或者如果你调用隐藏它的方法,最后 CPU 仍然迭代地执行指令来处理每个集合元素。所以请详细说明。 【参考方案1】:

假设Environments 实现IEnumerable&lt;string&gt;DictioraryDictioary&lt;string, string&gt; - 基于 linq 的解决方案是这样的:

Environments.ToDictionary(
    k => k, 
    v => ConfigurationManager.ConnectionStrings[$"ConnectionString_v"].ToString()
);

请注意,ToDictionary 与大多数(如果不是全部)其他 linq 方法一样,在内部使用 forech - 所以它并不是真正的“没有循环”。

【讨论】:

【参考方案2】:

你可以这样做

Dictionary<string, string> dCs = new Dictionary<string, string>();

var allConnectionStrings = ConfigurationManager.ConnectionStrings;
foreach(ConnectionStringSettings cs in allConnectionStrings)

   dCs.Add(cs.Name, cs.ConnectionString);

【讨论】:

以上是关于从Web.Config获取多个connectionStrings到字典c#没有循环的主要内容,如果未能解决你的问题,请参考以下文章

转载 How to Encrypt connection string in web.config

允许用户从Web.config获取IIS授权角色

vs项目发布时提示类似Default-Web.config Connection String”参数不能为 Null 或空的报错问题

使用 dotnet publish 发布多个 web.config

您如何处理多个环境的多个 web.config 文件?

多个 web.config 重定向规则