【问题标题】:How to access the default connection string from web.config in c#如何在 c# 中从 web.config 访问默认连接字符串
【发布时间】:2018-03-10 00:36:16
【问题描述】:

我的配置文件具有以下配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data" />
  </configSections>
  <dataConfiguration defaultDatabase="myConnectionString" />
  <connectionStrings>
    <add name="myConnectionString" connectionString="Data Source=mydatasource;Max Pool Size=100;Pooling=true; Initial Catalog=MyDB;User ID=Myuser;Password=Password;Connection Timeout=60" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
  </startup>
</configuration>

如您所见,我已将默认dataconfiguration 设置为使用myConnectionString 作为默认连接字符串,但在代码后面(c#)中,我如何访问此连接字符串而无需提供名称,即@987654324 @

所以在下面的代码中:

string connectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;

SqlConnection cnn = new SqlConnection(connectionString);

SqlBulkCopy sbc = new SqlBulkCopy(cnn);

我想跳过硬编码连接字符串的名称。

【问题讨论】:

  • 如果您正在使用数据访问应用程序块,您将空字符串传递给连接参数,它将采用默认配置。
  • 可惜我不是,我其实是使用SqlBulkCopy批量插入数据:SqlConnection cnn = new SqlConnection(connectionString); // 初始化 SqlBulkCopy 对象 SqlBulkCopy sbc = new SqlBulkCopy(cnn);
  • 然后您可以手动引用 dataConfiguration 部分并获取名称,或者(不太可靠)您可以通过索引而不是名称来引用连接字符串。

标签: c# sql web-config connection-string app-config


【解决方案1】:
var dataConfig = (Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings)System.Configuration.ConfigurationManager.GetSection(
    "dataConfiguration");

string connectionString = ConfigurationManager.ConnectionStrings[dataConfig.DefaultDatabase].ConnectionString;

这就是我从自定义配置部分和 DatabaseSettings 类的典型用法中可以看出的。

编辑:我已经在 LINQPad 中使用您的确切 app.config 对其进行了测试,得到了结果:

Data Source=mydatasource;Max Pool Size=100;Pooling=true; Initial Catalog=MyDB;User ID=Myuser;Password=Password;Connection Timeout=60

【讨论】:

  • 像魅力一样工作。谢谢@Gerino
猜你喜欢
  • 2011-05-11
  • 1970-01-01
  • 2011-07-10
  • 2012-08-12
  • 2013-06-25
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 2010-11-05
相关资源
最近更新 更多