2015-03-13 49 views
0

只是一個簡短的問題。我有一個解決方案分成多個項目。在一個項目中,我有數據庫交互和我的EDMX。在這個項目中,我有我的app.config文件與一些連接字符串。web.config,app.config優先級/依賴性和編譯使用

該項目作爲Web項目中的依賴項導入。在這一個,我有我的Web.config在哪裏定義(或「重寫」)連接字符串。

我想知道什麼是用於配置數據庫連接的機制。根據我的理解,Web.config的優先級高於App.config。但我想知道的是,編譯時使用的依賴項目中的App.config?

例如:

項目A =>的app.config:

<connectionStrings> 
    <add name="A" connectionString="myConnectionStringA"/> 
    <add name="B" connectionString="myConnectionStringB"/> 
</connectionStrings> 

而Web.config中的相同,但與:

<connectionStrings> 
    <add name="A" connectionString="myConnectionStringC"/> 
    <add name="B" connectionString="myConnectionStringD"/> 
</connectionStrings> 

哪一個將被用來限定連接到EDMX?一方面,在編譯時,邏輯上它將是用於定義它的A & B,並且在運行時將使用C & D.

但我不知道這件事對我來說,一旦dll是「配置」,我不知道如何罐體C和D來代替的& B.

有人能解釋一下請給我?

謝謝!

回答

0

在運行時使用的配置文件是與啓動應用程序的位置相關的配置文件。如果啓動projectA,它將是App.config文件。

其實當你運行你的Web項目將是Web.config文件中有這將是通過在正確的目錄「調試」或「釋放」

編譯生成的文件。

該dll不是配置文件中的值,它們是在應用程序開始運行時讀取的,這取決於正在運行的應用程序。 這就是爲什麼如果你改變它們的值,當你重新啓動應用程序時,它們將會改變,而不需要重新編譯項目。

0

在Visual Studio中設計實體時,將使用存儲在項目的app.config文件中的連接字符串。

即使您從Web項目中添加對項目的引用,所引用項目的app.config在Web項目的上下文中根本不會使用。當然,在將連接字符串添加到web.config時,它可以用作藍圖。

與web項目相關的配置文件是web.config。因此,在運行或發佈Web項目時,使用的設置是web.config中的設置。 它們沒有覆蓋app.config的設置,例如「如果連接字符串未在web.config文件中配置,然後使用存儲在app.config中的連接字符串」。 需要將運行web項目時要使用的連接字符串添加到web.config文件中,否則如果使用實體類,則會遇到錯誤。

有關配置ASP.NET Web應用程序的詳細信息,請參閱此link

0

但我不知道這件事對我來說,一旦dll是「配置」,我 看不出如何罐體C和D來代替的& B.

程序運行時配置值被取出,而不是編譯時。