我有这样的架构:
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="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="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>
答案 0 :(得分:2)
在任何.NET应用程序中,只有一个配置文件是查找配置信息的自然起点。对于Web应用程序,这是应用程序 1 根目录下的web.config
文件。
虽然您的存储库项目中可能有一个名为app.config
的文件(实际上,某些VS工具可能添加了一个)或您的EF项目,但是当您尝试时它不是使用阅读配置信息。
连接字符串部分需要存在于MVC应用程序的web.config中。
1 对于非Web应用程序,它是生成app.config
文件的项目的.exe
,并且在构建期间自动复制为XXX.exe.config