2015-03-13 48 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.

程序运行时配置值被取出,而不是编译时。