申请不能搭建物品

run*_*uk0 47 c# sql asp.net-mvc asp.net-mvc-scaffolding entity-framework-6

我在VS 2013 Professional中创建了一个MVC 5应用程序,然后首先使用EF 6.1代码与SQL Server Express上的现有数据库.当我尝试创建视图时,我正在使用"新建脚手架项目...",然后选择"带视图的MVC 5控制器,使用实体框架."我选择模型和上下文类,然后单击"确定".然后出现以下错误消息,并且不创建任何代码.我已经卸载了EF Power Tools并出现了同样的错误.

错误

运行所选代码生成器时出错:'调用目标已抛出异常.'

我还尝试卸载/重新安装VS 2013和SQL Server,没有任何更改.

关于什么可能导致此错误的任何其他想法?

Dev*_*SPM 41

在我的情况下,我将连接字符串从Web.config中移出

<connectionStrings configSource="ConnectionStrings.config"/>
Run Code Online (Sandbox Code Playgroud)

当我尝试脚手架时,我开始收到错误.

运行所选代码生成器时出错:'调用目标已抛出异常.'

将我的连接字符串移回Web.config解决了我的问题.

  • 我的web.config中有重复的连接字符串条目 (4认同)
  • 我在configSections节点之前声明了连接字符串.因此脚手架无法找到EF. (3认同)
  • BOOOO MSFT.这是我的问题. (2认同)

Mha*_*nd7 15

我也有这个问题,我通过在我的数据库上下文中调用base.onModelCreating来解决问题

base.OnModelCreating(modelBuilder);
Run Code Online (Sandbox Code Playgroud)

  • 我在我的代码中开始使用这一行,但是在添加新的脚手架项目时我仍然遇到错误.使用VS 2013 Update 5和SQL Server Express 2012,并按照http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-an-entity上的教程进行操作-framework数据模型换一个-ASP净MVC-应用 (2认同)

小智 13

这解决了我的问题,

加入throwIfV1Schema: false基数DbContext

如此:

public MyDbContext() : base("ConectionStringName", throwIfV1Schema: false) { }
Run Code Online (Sandbox Code Playgroud)


小智 12

使用带有'ASP.NET MVC5并使用实体框架的视图'的脚手架创建控制器时,我遇到了同样的问题

问题是因为我<connectionStrings>之前<configSections>在web.config中提供了标记.解决问题<connectionStrings>后设置<configSections>.

我想,虽然脚手架,ASP.NET MVC想首先解析实体框架,然后是连接字符串,因为我之前提供了连接字符串,以便在解析Entity Framework版本之后找不到连接字符串所以它抛出调用问题.


Ash*_*mar 10

迟回复; 但是,我发布这个答案,希望有人可以用这个答案来解决他们的问题.

出于某种原因,如果您的程序无法读取connectionString信息(来自web.config或其他方式),那么将抛出此错误.

确保正确检索有效的connectionString信息,没有任何问题.


n8m*_*mob 6

我有相同的错误消息.我尝试Data context class从Add Controller对话框添加一个新的,然后我得到一个不同的错误:

There was an error running the selected code generator:
'Sections must only appear once per config file. See the help topic
<locations> for exceptions.
Run Code Online (Sandbox Code Playgroud)

事实证明,<connectionStrings>我的web.config文件中有两个元素.(我在包含我的Entity Framework模型的类库的app.config中粘贴了一个.)


tr3*_*r3v 5

在我的例子中,我不得不将我的DBContext构造函数还原为使用静态连接字符串,如web.config中所定义

当我使用动态创建的连接字符串时,脚手架不起作用.

public MyContext() : base("name=MyContext") { }
Run Code Online (Sandbox Code Playgroud)


Enz*_*ero 5

我有一个同样的问题,即它不会添加脚手架项目,似乎通过nuget软件包管理器控制台卸载实体框架是可行的

运行包管理器控制台

工具-> NuGet软件包管理器->软件包管理器控制台

去除:

UnInstall-Package EntityFramework

要重新安装:

Install-Package EntityFramework

或在一个命令中:

Update-Package -reinstall EntityFramework

我希望这可以帮助某人,因为我花了一些时间才来解决这个问题。