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

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

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

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

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

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

有人有什么建议吗?


当前回答

我通过没有将项目设置为启动来得到这一点,正如另一个答案所示。我对此的贡献-当做Add-Migrations和Update-Database时,在Nuget Package Manager Console中指定启动项目作为命令的一部分(不包括'['或']'字符,这只是为了告诉你你需要将位于那里的文本更改为你的项目名称):

Enable-Migrations Add-Migrations -StartupProject[包含数据上下文类的项目名称] Update-Database -StartupProject[与上面的项目名称相同]

这样就行了。

其他回答

这是因为您的上下文类是从DbContext继承的。我猜你的上司是这样的:

public MyEntities()
    : base("name=MyEntities")

name =…应该改为你的connectionString的名字

尝试将连接字符串复制到MVC项目中的.config文件中。

确保你已经在启动项目的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 :)

当您在项目中使用图层并在DataLayer中定义或安装实体框架并尝试运行项目时,会发生此问题

因此,为了克服这个问题,从Edmx文件所在的层复制连接字符串,并将连接字符串粘贴到main web.config中。

在web中添加Connectoinstrnig。配置文件

<ConnectionStiring> <add name="dbName" Connectionstring=" include provider name too"  ></ConnectionStiring>