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