我使用实体框架和ASP。NET MVC 4构建应用程序

我的解决方案分为两个项目;

一个类库,其中包括我的数据模型(.edmx)文件和一些自定义接口 引用上面类库的“容器”MVC项目

我的问题是,当我试图使用'MyEntites' DbContext时,我得到以下错误:

中找不到名为“MyEntities”的连接字符串 应用程序配置文件。

我猜这个问题与连接字符串位于类库的app.config而不是MVC项目的事实有关。

有人有什么建议吗?


当前回答

确保你已经在启动项目的ROOT web.config中放置了连接字符串。

I know I'm kinda stating the obvious here, but it happened to me too - though I already HAD the connection string in my MVC project's Web.Config (the .edmx file was placed at a different, class library project) and I couldn't figure out why I keep getting an exception... Long story short, I copied the connection string to the Views\Web.Config by mistake, in a strange combination of tiredness and not-scrolling-to-the-bottom-of-the-solution-explorer scenario. Yeah, these things happen to veteran developers as well :)

其他回答

如果将启动项目更改为没有连接字符串的项目,也会发生这种情况。

右击解决方案-单击属性 在“公共属性”下,选择启动项目 在右窗格中选择项目 有连接字符串(在大多数情况下,这将是MVC项目- 启动解决方案的项目)

如果您正在使用MVVM模型,请尝试将连接字符串复制到项目的所有部分。

例如,如果您的解决方案包含两个项目,类库项目和wpf项目,您必须复制后端项目(库类项目)的连接字符串,并将副本放在wpf项目的App.config文件中。

<connectionStrings>
  <add name="DBEntities" ... />
</connectionStrings>

希望对你有帮助:)

你可以把连接字符串传递给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...
}

确保你的项目(使用DbContext)作为启动

OR

添加到app.config(或web.config)中设置为启动连接字符串的项目

OR

像这样调用命令

Update-Database -Script -ProjectName '<项目名称>' -StartupProjectName '<项目名称>' -ConnectionString '数据源=.;初始目录=<db名称>;集成安全性=True;MultipleActiveResultSets=True' -ConnectionProviderName 'System.Data.SqlClient'

然后再试一次

我有这个问题时,我使用多个项目,启动项目与web。EntityFramework项目的config和app.config。

为了避免这个问题,你必须:

您需要连接字符串在开始*。配置文件。 您需要将EntityFramework DLL安装到引用中