从类库中读取连接字符串

时间:2013-03-08 08:43:45

标签: c# winforms connection-string app-config class-library

我目前正在努力从我的类库(和单元测试)中读取WinForms应用程序中App.config的连接字符串。

我添加了一个'测试'进入App.config;

<connectionStrings>
     <add name="MyConnString" connectionString="Test;" />
</connectionStrings>

我的TestMethod看起来像这样;

    [TestMethod]
    public void TestConnection1()
    {
        string connString = "";

        if (ConfigurationManager.ConnectionStrings["MyConnString"] != null)
        {
            connString = ConfigurationManager.ConnectionStrings["MyConnString"].ConnectionString;
        }

        string expected = "Test;";
        string actual = connString;

        Assert.AreEqual(expected, actual);
    }

这显然是失败的。 Actual的值为空。 我做错了什么?

enter image description here

2 个答案:

答案 0 :(得分:1)

您还需要将连接字符串键添加到Test项目的配置中。

答案 1 :(得分:1)

关于你对DJ Kraze的评论:“ @DJ KRAZE,如果我把0作为索引,它会返回一个SQLExpress”aspnetdb.mdf“的连接字符串。如果我把1作为索引,我会得到一个例外( IndexOutOfRangeException),显然找不到我的字符串。“

问题是您忘记了配置元素。例如:

参考MSDN:Storing and Retrieving Connection Strings

<?xml version='1.0' encoding='utf-8'?>
  <configuration>
    <connectionStrings>
      <clear />
      <add name="Name" 
       providerName="System.Data.ProviderName" 
       connectionString="Valid Connection String;" />
    </connectionStrings>
  </configuration>

machine.config文件还包含<connectionStrings>部分,其中包含Visual Studio使用的连接字符串。从Windows应用程序中的 app.config 文件中按提供程序名称检索连接字符串时,首先加载machine.config中的连接字符串,然后加载来自 app.config 。在connectionStrings元素从内存中的数据结构中删除所有继承的引用后立即添加clear,以便仅考虑在本地 app.config 文件中定义的连接字符串。