了解 App.config 和使用配置管理器:GetSection 与 ConnectionString
Understanding App.config and using Configuration Manager: GetSection vs. ConnectionString
在某些情况下,我想打开一个数据库连接并执行一些查询。
这是我的 App.config:
<dbservers>
<connectionStrings>
<add name="Cube_ConnectionString" connectionString="OLEDB; Datasource=http://cube.com; Initial Catalog=BP" />
</connectionStrings>
<queries>
<add connectionStringName="CubeConnectionString" usedBy="DataAccessor" connectionString="" />
</queries>
</dbservers>
这就是我打算检索 connectionString 的方式:
System.Configuration.ConfigurationManager.ConnectionStrings["Cube_ConnectionString"].ConnectionString;
我想知道使用 GetSection 还是 ConnectionString 最好。他们俩会得到什么回报?这两种方法如何在这样的嵌套 XML 中发挥作用?
此外,将查询放在 app.config 中的目的是什么?
提前致谢
我认为 ConnectionStrings
不会奏效,除非您将它们放在标准部分。如果您想要自定义 <dbservers>
部分,则必须改用 GetSection
。
这个功能有点笨拙,但非常有用。 How to: Create Custom Configuration Sections Using ConfigurationSection 是一个有用的指南。
本质上,这归结为创建一个继承自 ConfigurationSection
的 class,并添加适当的属性(来自上述指南):
public class PageAppearanceSection : ConfigurationSection
{
// Create a "remoteOnly" attribute.
[ConfigurationProperty("remoteOnly", DefaultValue = "false", IsRequired = false)]
public Boolean RemoteOnly
{
get
{
return (Boolean)this["remoteOnly"];
}
set
{
this["remoteOnly"] = value;
}
}
// Create a "font" element.
[ConfigurationProperty("font")]
public FontElement Font
{
get
{
return (FontElement)this["font"]; }
set
{ this["font"] = value; }
}
// Create a "color element."
[ConfigurationProperty("color")]
public ColorElement Color
{
get
{
return (ColorElement)this["color"];
}
set
{ this["color"] = value; }
}
}
...然后在 app/web.config:
中添加对您的部分的引用
<configuration>
<configSections>
<section name="dbservers" type="Namespace.DbServersSection, YourAssembly"/>
</configSections>
</configuration>
在某些情况下,我想打开一个数据库连接并执行一些查询。
这是我的 App.config:
<dbservers>
<connectionStrings>
<add name="Cube_ConnectionString" connectionString="OLEDB; Datasource=http://cube.com; Initial Catalog=BP" />
</connectionStrings>
<queries>
<add connectionStringName="CubeConnectionString" usedBy="DataAccessor" connectionString="" />
</queries>
</dbservers>
这就是我打算检索 connectionString 的方式:
System.Configuration.ConfigurationManager.ConnectionStrings["Cube_ConnectionString"].ConnectionString;
我想知道使用 GetSection 还是 ConnectionString 最好。他们俩会得到什么回报?这两种方法如何在这样的嵌套 XML 中发挥作用?
此外,将查询放在 app.config 中的目的是什么?
提前致谢
我认为 ConnectionStrings
不会奏效,除非您将它们放在标准部分。如果您想要自定义 <dbservers>
部分,则必须改用 GetSection
。
这个功能有点笨拙,但非常有用。 How to: Create Custom Configuration Sections Using ConfigurationSection 是一个有用的指南。
本质上,这归结为创建一个继承自 ConfigurationSection
的 class,并添加适当的属性(来自上述指南):
public class PageAppearanceSection : ConfigurationSection
{
// Create a "remoteOnly" attribute.
[ConfigurationProperty("remoteOnly", DefaultValue = "false", IsRequired = false)]
public Boolean RemoteOnly
{
get
{
return (Boolean)this["remoteOnly"];
}
set
{
this["remoteOnly"] = value;
}
}
// Create a "font" element.
[ConfigurationProperty("font")]
public FontElement Font
{
get
{
return (FontElement)this["font"]; }
set
{ this["font"] = value; }
}
// Create a "color element."
[ConfigurationProperty("color")]
public ColorElement Color
{
get
{
return (ColorElement)this["color"];
}
set
{ this["color"] = value; }
}
}
...然后在 app/web.config:
中添加对您的部分的引用<configuration>
<configSections>
<section name="dbservers" type="Namespace.DbServersSection, YourAssembly"/>
</configSections>
</configuration>