asp.net-mvc – 为什么在我的类库中找不到连接字符串到另一个类库?

我有这样的架构:

 

其中MVC层是表示层. EF是类库,Repository是另一个类库.我试图通过创建EF上下文对象从存储库向数据库插入数据.在存储库类库中添加了EF引用. EF具有edmx文件.它的app.config具有EF生成的连接字符串.
代码是:

public bool CreateUser(User _user)
   {
       context.Users.Add(_user);
       context.SaveChanges();
       return true;
   }   

但在执行此操作时,我遇到以下异常:

No connection string named 'MyEntitiesConnection' could be found in the application config file.

我尝试在存储库app.config中添加具有相同名称的相同连接字符串.但没有工作.谁有解决方案?

编辑:
连接字符串是:

<add name="MyEntitiesConnection" connectionString="metadata=res://*/EF.Entities.csdl|res://*/EF.Entities.ssdl|res://*/EF.Entities.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=Servername\MSSQL2008R2;initial catalog=MyDBName;persist security info=True;user id=sa;MultipleActiveResultSets=True;App=EntityFramework;" providerName="System.Data.EntityClient" />

的app.config:

<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
    <connectionStrings>
        <add name="MyEntitiesConnection" connectionString="metadata=res://*/EF.Entities.csdl|res://*/EF.Entities.ssdl|res://*/EF.Entities.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=Servername\MSSQL2008R2;initial catalog=MyDBName;persist security info=True;user id=sa;MultipleActiveResultSets=True;App=EntityFramework;" providerName="System.Data.EntityClient" />
    </connectionStrings>    
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>
</configuration>

最佳答案 在任何.NET应用程序中,只有一个配置文件是查找配置信息的自然起点.对于Web应用程序,这是application1根目录下的web.config文件.

虽然您的存储库项目中可能有一个名为app.config的文件(实际上,某些VS工具可能已添加了一个)或您的EF项目,但在尝试读取配置信息时不会使用它.

连接字符串部分需要存在于MVC应用程序的web.config中.

1对于非Web应用程序,它是生成.exe文件的项目的app.config,并在构建期间自动复制为XXX.exe.config.

点赞