我使用实体框架和ASP。NET MVC 4构建应用程序
我的解决方案分为两个项目;
一个类库,其中包括我的数据模型(.edmx)文件和一些自定义接口 引用上面类库的“容器”MVC项目
我的问题是,当我试图使用'MyEntites' DbContext时,我得到以下错误:
中找不到名为“MyEntities”的连接字符串 应用程序配置文件。
我猜这个问题与连接字符串位于类库的app.config而不是MVC项目的事实有关。
有人有什么建议吗?
我使用实体框架和ASP。NET MVC 4构建应用程序
我的解决方案分为两个项目;
一个类库,其中包括我的数据模型(.edmx)文件和一些自定义接口 引用上面类库的“容器”MVC项目
我的问题是,当我试图使用'MyEntites' DbContext时,我得到以下错误:
中找不到名为“MyEntities”的连接字符串 应用程序配置文件。
我猜这个问题与连接字符串位于类库的app.config而不是MVC项目的事实有关。
有人有什么建议吗?
当前回答
你可以把连接字符串传递给EntityFramework,然后继续你的生活:
public partial class UtilityContext : DbContext
{
static UtilityContext()
{
Database.SetInitializer<UtilityContext>(null);
}
public UtilityContext()
: base("Data Source=SERVER;Initial Catalog=DATABASE;Persist Security Info=True;User ID=USERNAME;Password=PASSWORD;MultipleActiveResultSets=True")
{
}
// DbSet, OnModelCreating, etc...
}
其他回答
当您在项目中使用图层并在DataLayer中定义或安装实体框架并尝试运行项目时,会发生此问题
因此,为了克服这个问题,从Edmx文件所在的层复制连接字符串,并将连接字符串粘贴到main web.config中。
尝试将连接字符串复制到MVC项目中的.config文件中。
确保你的项目(使用DbContext)作为启动
OR
添加到app.config(或web.config)中设置为启动连接字符串的项目
OR
像这样调用命令
Update-Database -Script -ProjectName '<项目名称>' -StartupProjectName '<项目名称>' -ConnectionString '数据源=.;初始目录=<db名称>;集成安全性=True;MultipleActiveResultSets=True' -ConnectionProviderName 'System.Data.SqlClient'
然后再试一次
你是对的,这是因为类库(其中.edmx文件)不是你的启动/主项目。
您需要将连接字符串复制到主项目配置文件。
如果你的启动/主项目没有配置文件(就像在我的控制台应用程序的情况下),只需添加一个(启动项目-添加新项->应用程序配置文件)。
更多相关信息可以在这里找到: MetadataException:无法加载指定的元数据资源
如果您正在使用MVVM模型,请尝试将连接字符串复制到项目的所有部分。
例如,如果您的解决方案包含两个项目,类库项目和wpf项目,您必须复制后端项目(库类项目)的连接字符串,并将副本放在wpf项目的App.config文件中。
<connectionStrings>
<add name="DBEntities" ... />
</connectionStrings>
希望对你有帮助:)