MVC 脚手架不支持 Entity Framework 6 或更高版本
Posted
技术标签:
【中文标题】MVC 脚手架不支持 Entity Framework 6 或更高版本【英文标题】:MVC scaffolding does not support Entity Framework 6 or later 【发布时间】:2013-10-10 12:26:39 【问题描述】:刚刚升级到 Entity Framework 6 来看看。我正在使用 MVC4。
但我在尝试从模型和上下文中创建控制器时收到此消息。
【问题讨论】:
问题是什么? 嗯,这意味着 。解决方案:使用 Entity Framework 5 或更低版本,或者不使用脚手架 【参考方案1】:认为这可以使用一些扩展 :) 如上所述 ASP.NET MVC 4 脚手架不支持 EF6 或更高版本。这意味着必须安装与 MVC 4 兼容的旧版 EF。为此:
-
打开包管理器控制台:
选择工具 -> 库包管理器 -> 包管理器控制台
在包管理器控制台中,通过执行以下命令卸载当前的 EF 包:
UnInstall-Package EntityFramework -Version <version number>
*其中<version number>
是当前安装的 EF 的版本号。
*注意:要了解安装的 EF 版本,请在包管理器控制台中运行以下命令:
Get-Package EntityFramework
为避免潜在的元数据问题,需要删除 Web.config 文件中的提供程序条目:
打开项目目录下的 Web.config 文件。删除以下行:
<providers>
<provider invariantName=System.Data.SqlClient type=System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer />
</providers>
现在,在 Package Manager Console 中执行以下命令来安装 Entity Framework 5.0.0:
Install-Package EntityFramework -Version 5.0.0
【讨论】:
谢谢你,这篇文章帮助了我。对其他人的注意事项:您首先需要使用相同的卸载命令卸载依赖于 entityFramework 的几个包,并且使用“UnInstall-Package EntityFramework”而不指定版本就足够了。 我的项目中引用了 MVC 5.2.3,但仍然收到object reference not set to an instance of an object
错误。我是否需要在 VS 本身中安装/检查某些东西(因为我猜这是一个工具错误)?【参考方案2】:
经过一番挖掘
ASP.NET MVC 4 脚手架不支持 Entity Framework 6 或更高版本。下一个版本的 ASP.NET MVC 将支持 Entity Framework 6 的脚手架。
所以看起来好像要等到 MVC 5 正确发布了
【讨论】:
【参考方案3】:ASP.NET MVC 4 脚手架不支持 Entity Framework 6 或更高版本。 MVC5 中将包含对脚手架的支持。解决方法是使用 EF5 搭建脚手架,然后升级到 EF6。
http://support.microsoft.com/kb/2816241
【讨论】:
【参考方案4】:对我来说为 MVC 4 和 EF 6 搭建控制器和视图的解决方法:
-
使用现有或新的 MVC 5 项目并复制 实体数据模型
你想在 MVC 中为其创建脚手架
4.
将实体数据模型添加到您的MVC 5 DBContext
在 MVC 5 项目中创建您的脚手架控制器和视图
这显然适用于 EF 6。
将生成的视图从 MVC 5 复制到您的旧 MVC 4 项目
如果您不想降级 EF 版本,这是一种生成脚手架的解决方案。
对我来说这是开箱即用的
【讨论】:
以上是关于MVC 脚手架不支持 Entity Framework 6 或更高版本的主要内容,如果未能解决你的问题,请参考以下文章
Entity Framework Core:自动化的数据库脚手架到类库中
在 Entity Framework 7 RC 1 和 ASP.NET MVC 6 中播种初始数据 [重复]
向模型 (edmx) 添加新表而不更新 Database First Entity Framework MVC 应用程序中的其他模型