2014-02-16 147 views
0

我已成功地迷惑自己...並不難,我知道了,我想找一些指導...類庫連接字符串混淆

我已經寫了一個dll其中我現在開始在用我的Winforms UI。

這是問題的後續到這一點:

Class Libray Connection String - How to change?

如該帖子說,我已經在DLL中添加從app.config中相同的連接字符串設置我的App.config我的UI。

在我的UI,我有一個文本框,用戶可以輸入連接字符串,然後點擊「保存」,運行下面的代碼:

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

傳遞連接字符串函數,或具備的功能查找連接字符串(或者的DbContext,創建時連接字符串改變)它應該使用,基本上。 –

回答

0

假設你正在使用ConfigurationManager檢索應用程序連接字符串,請嘗試:

ConfigurationManager.RefreshSection("connectionStrings"); 
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);