为什么在我的类库中找不到连接字符串到另一个类库?

时间:2014-05-02 06:18:04

标签: asp.net-mvc entity-framework connection-string class-library

我有这样的架构:  enter image description here

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>

1 个答案:

答案 0 :(得分:2)

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

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

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


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