对于某些上下文,我想打开与数据库的连接并执行一些查询。
这是我的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中的目的是什么?
提前致谢
答案 0 :(得分:1)
除非您将它们放在标准部分中,否则我认为ConnectionStrings
无效。如果您想要自定义<dbservers>
部分,则必须使用GetSection
。
这个功能有点尴尬,但非常有用。 How to: Create Custom Configuration Sections Using ConfigurationSection是有用的指南。
基本上,这可以归结为创建一个继承自ConfigurationSection
的类,并添加适当的属性(来自上面的指南):
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>