了解App.config并使用Configuration Manager:GetSection与ConnectionString

时间:2015-06-24 23:19:40

标签: c# app-config configuration-files configurationmanager

对于某些上下文,我想打开与数据库的连接并执行一些查询。

这是我的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中的目的是什么?

提前致谢

1 个答案:

答案 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>