我设法让自己感到困惑......我知道并不困难,我正在寻找一些指导......
我已经编写了一个dll,我现在开始在Winforms UI中使用它。
这是对此的后续问题:
Class Libray Connection String - How to change?
正如那篇文章所述,我已经在dll中将app.config中相同的连接字符串设置添加到我的UI中的App.config中。
在我的用户界面中,我有一个文本框,用户可以在其中输入连接字符串并点击“保存”,它运行以下代码:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.ConnectionStrings.ConnectionStrings["TPAPI.Properties.Settings.TruePotentialConnectionString"].ConnectionString = txtConnectionString.Text;
config.Save(ConfigurationSaveMode.Modified, true);
ConfigurationManager.RefreshSection("connectionStrings");
这似乎正确地更新了文件中的字符串。
但是,这就是以前的帖子让我困惑的地方......
该设置仅在软件启动时被读取。不知怎的,我需要改变Belogix解释的设置,我应该这样做:
var connectionString = "Data Source=MegaServer;Initial Catalog=MyDb; .. etc ..";
using (var db = new MyDataContext(connectionString))
{
// This will connect to MegaServer...
}
但是,我正在调用我的dll中的函数:
List<Page> pages = Database.getlistOfPagesToScan();
如何告诉该调用开始使用UI的App.config中新保存的连接字符串?
任何人都可以放弃任何光明吗?
由于
答案 0 :(得分:1)
您应该从dll中的设置获取连接字符串。您的答案实际上就在您发布的问题中。
使用此:
var connectionString = config.ConnectionStrings.ConnectionStrings["TPAPI.Properties.Settings.TruePotentialConnectionString"].ConnectionString;
您也可以使用:
string s = Properties.Settings.Default.ConnectionStr;
Console.WriteLine("Connection string from main app: " + s);
//
// When setting access modifier on Class library to `public`
//
s = ClassLibrary1.Properties.Settings.Default.ConnectionStr;
Console.WriteLine("Connection string from dll: " + s);
答案 1 :(得分:0)
假设您使用ConfigurationManager
检索应用程序连接字符串,请尝试:
ConfigurationManager.RefreshSection("connectionStrings");