我编写了一个使用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中使用它?
答案 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项目。