2013-02-27 168 views
1

我有一個類庫,具有域對象(基於LINQ的對象,在.net 4.0)。 我想讓這個庫爲它自己的app.config使用連接字符串。覆蓋dll配置

也存在一些問題:繼設置使用的模型 :ApplicationSettingsBase,我創建了一個 包裝應該從app.config中讀取設置。但是,與模型不同,我提供默認值。 的問題是,其性能應該從app.config中加載數據

internal sealed class ApplicationSettings : ApplicationSettingsBase 
    { 
    // other properties 

     [SpecialSetting(SpecialSetting.ConnectionString)] 
     [global::System.Configuration.DefaultSettingValueAttribute("Server=.;Database=RFPLUSSTD;User Id=SYSADM;Password=SYSADM;")] 
     public string MainConnectionString 
    { 
    get { return (string)this["MainConnectionString"]; } 
    } 

//其他屬性 }

in app.config: 
<connectionStrings> 
<add name="MainConnectionString" 
connectionString="..." 
providerName="System.Data.SqlClient" /> 
</connectionStrings> 

現在,這也不行...... 我試着將conn字符串的名稱設置爲完全限定的名稱,如 namespace.class.property,但可用。

  • 我不想使用默認設置類,通過dbml的使用,因爲它 編譯設置:d和無需重新編譯我不能改變他們...
  • 我已經使用應用程序設置類的項目中的不同模型 1.1,但我認爲3.5已經成長到足以把自己的對象, 工作..

那麼,爲什麼不工作,我怎樣才能使它工作?

謝謝

+0

哪個項目正在加載連接字符串以及它如何加載它?還有,你如何修改項目A中的連接字符串? – Justin 2013-02-27 09:41:15

+0

您可能需要提供更多詳細信息。如果這是一個使用類似於實體框架的項目,那麼在實例化datacontext時,會發現有不同的構造函數來設置連接字符串。 – Paddy 2013-02-27 09:41:56

+0

是的,它是一個asp.net應用程序,B項目使用ConnString.Settings文件來設置默認的連接字符串,但是它被編譯,A項目不能再修改connString。 – 2013-02-27 10:01:01

回答

1

你需要確保你在文件系統權限進行更改。我希望你已經考慮過了。如果您確定您更改了配置文件,並且它只是帶來了默認設置,那麼它可能是從輸出bin文件夾中加載配置文件,而不是在項目根目錄中。如果您確定修改失敗,請發佈錯誤消息。

更新時間:

傑克您好,我想與您的代碼的主要問題是,它是創建的applicationSettings新的類實例每次,如果設置在用戶範圍,你將有空值,然後它每次都會返回默認值。

您可以使用內置的Settings類輕鬆完成此操作。默認情況下,只能在裝配內訪問設置,內部密封部分分類設置(在Settings.Designer.cs)。如果將其更改爲公開密封,您將可以從任何裝配中訪問「設置」,接下來您必須將設置保持爲「應用程序作用域」而不是「用戶作用域」。一旦你完成了這兩個,你可以檢索和保存沒有任何問題。

+0

看看這個視頻得到一些想法,當然,它有足夠的權限。當運行應用程序時,配置文件位於bin文件夾的根目錄下,它顯示默認的connString,不是我的配置 – 2013-02-28 09:09:32

+0

請參閱更新 – 2013-02-28 12:43:42

+0

它是不涉及到內部密封的部分類設置更改爲公共。 – 2013-03-01 01:21:19