类库连接字符串 - 如何更改?

时间:2014-02-14 10:39:54

标签: c# winforms

我编写了一个使用Linq To Sql与SQL数据库通信的类库。

当我添加.dml文件时,它会自动在我的app.config文件中放置一个连接字符串,如下所示:

<connectionStrings>
    <add name="core.Properties.Settings.TruePotentialConnectionString"
        connectionString="Data Source=(local);Initial Catalog=thedatabase;Persist Security Info=True;User ID=sa;Password=password"
        providerName="System.Data.SqlClient" />
</connectionStrings>

类库完美无缺。

我现在已经开始编写一个引用此类库的Winforms UI,我刚刚意识到在不同的机器上运行时,我不知道如何更改连接字符串的值。

理想情况下,我希望能够在UI中添加连接字符串作为设置,我将其传递给dll以覆盖dll中的设置。

更改dll正在使用的连接字符串的正确方法是什么,而不是在app.config中使用它?

4 个答案:

答案 0 :(得分:1)

您的ConnectionString值来自主机 app.config。在这种情况下,您的WinForms应用程序是主机,因此如果您将ConnectionString复制到WinForms app.config中,它将被库使用。

<强>更新

如果您希望在运行时动态设置ConnectionString,则可以将覆盖连接字符串传递给DataContext构造函数,如下所示:

var connectionString = "Data Source=MegaServer;Initial Catalog=MyDb; .. etc ..";
using (var db = new MyDataContext(connectionString))
{
   // This will connect to MegaServer...
}

或者使用WinForms app.config中的那个来做:

using (var db = new MyDataContext())
{
   // This will connect to (local) from app.config...
}

答案 1 :(得分:0)

您需要向应用程序添加配置文件(app.config)。然后,将dll app.config中的设置复制到可执行的app.config文件中。

答案 2 :(得分:0)

您可以在App.config文件中执行此操作(类似于您的Web.config文件),它具有相同的connectionStrings部分。你只需要为你的DLL使用的连接字符串使用相同的名称,它就应该把它拿起来。

答案 3 :(得分:0)

当您创建DataContext的新实例时,其中一个重载的构造函数接受连接字符串。

将连接字符串放入app.config文件中,它应该可以正常工作。

确保您在应用程序中有app.config,否则这将无效,即将其放入WinForms项目。

DataContext constructor.