4

我正在使用 Visual Studio 2012。我创建了一个 Class 项目并将 EF 数据模型添加到该项目中。我从现有的 SQL Server 数据库创建了数据模型。我创建了一个 MVC 4 项目,将实体连接字符串添加到 Web 配置,并添加了数据项目引用。

到目前为止一切都很好。

现在我想使用实体框架添加一个 MVC 控制器。我选择了一个模型类。我选择数据上下文类。单击添加。

VS 弹出一个错误,错误消息的最后一部分是类可能在编译的程序集中{这是真的}。

“AA”不是指定的“aanamespace.aaEntity”类的一部分,实体类无法修改为它的 DbSet 属性。例如,“aaEntity”可能在已编译的程序集中

4

6 回答 6

4

我处于同样的情况,我创建了一个类库,其中我有我所有的 .edmx,当我引用我的 mvc 项目时,我得到了完全相同的错误消息,我在这里发布了我的问题(stackoverflow.com/问题/18552864/…)

我是如何解决的:

关闭 Visual Studio 并再次打开它...

于 2013-09-10T21:50:12.717 回答
3

我想花时间自己回答这个问题,以便将来可以帮助有类似问题的其他人。

这就是我所做的。

在我的 MVC 项目的 Models 文件夹中创建了 .edmx 文件。构建 MVC 项目

现在我可以为 .edmx 文件中的任何表添加一个控制器。

注意:我认为最佳实践是在我的解决方案中创建一个包含 .edmx 文件的项目。我将此项目称为 myData。

我在我的 MVC 项目中添加了对这个项目的引用,并没有运气就尝试了这个脚手架。


我希望这对其他人有帮助,因为解决方案非常简单。

格里

于 2012-11-19T02:24:20.200 回答
1

该问题是由 Visual Studio 2012(早期访问)扩展的 VSCommands 引起的。一旦我卸载它,问题就消失了。

于 2013-03-18T04:52:56.913 回答
1

运行 Visual Studio(以管理员身份运行)对我有用。

于 2013-05-06T08:18:21.437 回答
0

在没有看到确切错误的情况下,我只能提出我在使用 EF 控制器脚手架时遇到的问题以及我是如何解决它的。如果您使用部分类扩展了 EF 上下文类,则必须从项目中删除后者并在生成控制器之前重新编译,否则 EF 脚手架将无法工作。

于 2012-11-18T15:45:28.517 回答
0

虽然这是一个非常古老的问题,但也许像我这样的人仍然面临同样的问题,没有一个建议的解决方案可以帮助他们。

创建新控制器/脚手架时出现此错误消息的原因是您的 EntityFramework 的版本。

怎么修:

如果您的项目是 MVC4,那么您应该使用实体版本 5。如果您使用实体版本 6,您将面临这个问题。

删除您的 .edmx 文件并添加您的 EntityFramework 版本 5。它将按预期工作。

于 2016-03-19T10:42:38.523 回答