MVC5和EF6.1.3脚手架问题
MVC5 and EF6.1.3 Scaffolding problems
我在使用 MVC5 和 [=81= 的控制器中通过 "Add View" 函数尝试使用脚手架构建视图时遇到问题] 6.1.3。
但是,使用Entity Framework 5.0.0一切正常~我可以成功构建视图。
使用Entity Framework6.1.3
当我 select "Add View" 函数时,出现以下错误
"There was an error running the selected code generator. 'Unable to
retrieve metadata for 'xxx'. Could not find the CLR type for 'xxx'.
我的环境是 VS2013 Ultimate (Update4),目标框架 4.5.1,C#,MVC5,EF6.1.3 Database First ObjectContext,SQL Server 2008。
我的 DAL 和 MVC 应用程序在不同的项目中。
我已通过 Nuget 和程序包管理器控制台命令行提示进行卸载和重新安装,检查两者是否使用相同版本的 EF6.1.3,并且所有其他参考均正确无误。
我的模型class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SysviewData;
namespace SysviewWebEF613.Models
{
public class DisplaySysoutModel
{
SysviewEntities context = new SysviewEntities();
public IEnumerable<vw_soServerInfo> GetSysouts()
{
return context.vw_soServerInfo.ToList();
}
}
}
我的控制器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SysviewWebEF613.Models;
namespace SysviewWebEF613.Controllers
{
public class DisplaySysoutsController : Controller
{
// GET: DisplaySysouts
DisplaySysoutModel model = new DisplaySysoutModel();
public ActionResult Index()
{
return View(model.GetSysouts());
}
}
}
关于EF6.1.3
1) 我正在使用 EF 数据库优先建模。由于历史原因,我正在使用 ObjectContext。
2) 我已经尝试使用代码生成策略 ~ "Legacy ObjectContext" 和 "T4" ~(clean/rebuild 等)都不起作用 ~ 我收到相同的错误消息。
"There was an error running the selected code generator. 'Unable to
retrieve metadata for 'xxx'. Could not find the CLR type for 'xxx'.
但是,如果我使用 EF5.0.0 ~ 我能够成功构建我的视图。
背景信息以及我不想使用 EF5.0.0 的原因
1) 我正在使用 MVC5 开发一个新的 Web 前端项目,该项目将替换包含 23 个其他项目的解决方案中的现有 Web 应用程序 ~ 目前使用 EF6.1.3 并且已经使用 EF6.x.x 大约2 年了。
那么,你能理解我不愿意改回使用 EF5.0.0 的心情吗?
2) 因此,出于上述原因 ~ 这就是我尝试使用 EF6.1.3 而不是 EF5.0.0 的原因。
Is it as simple as EF6.xxx does not support MVC5 scaffolding when using EF ObjectContext?
我已经和这个问题斗争了好几天了~我已经广泛研究了这个问题,虽然我在几年前看到过类似的脚手架问题(MVC4 和 EF6xx 的兼容性)~我理解(也许是错误的) MVC5 和 EF6.1.3 现在解决了这些问题,而且我还没有看到其他人在构建视图时遇到问题 ~ 的确 ~ 如果我使用相同的代码 ~ 但使用 EF5.0.0 ~ 一切正常。
我已经仔细检查了我的 app.config (DAL) 和 Web.config (MVC 项目)中的连接字符串 ~ 似乎都是正确的。
你有什么想法或者你有过类似的经历吗?你是如何解决这个问题的?
解决方法其实很简单。
Leave the "Data context class:" menu option empty
如下
我在比较 MVC5/EF 6.1.3 解决方案与 MVC5/EF 5.0.0 解决方案时才注意到这一点。
~ 您没有使用 EF 5.0.0 获得 "Data context class:" 菜单,所以凭直觉,我尝试在我的 EF 6.1.3 解决方案中创建一个视图,将 "Data context class:" 菜单留空并且BINGO ~ 视图生成成功。
在过去的两分钟里,我创建了另外两个模型,每个模型都有一个控制器,并使用脚手架成功构建了可渲染的视图。
我在使用 MVC5 和 [=81= 的控制器中通过 "Add View" 函数尝试使用脚手架构建视图时遇到问题] 6.1.3。
但是,使用Entity Framework 5.0.0一切正常~我可以成功构建视图。
使用Entity Framework6.1.3
当我 select "Add View" 函数时,出现以下错误
"There was an error running the selected code generator. 'Unable to retrieve metadata for 'xxx'. Could not find the CLR type for 'xxx'.
我的环境是 VS2013 Ultimate (Update4),目标框架 4.5.1,C#,MVC5,EF6.1.3 Database First ObjectContext,SQL Server 2008。
我的 DAL 和 MVC 应用程序在不同的项目中。
我已通过 Nuget 和程序包管理器控制台命令行提示进行卸载和重新安装,检查两者是否使用相同版本的 EF6.1.3,并且所有其他参考均正确无误。
我的模型class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SysviewData;
namespace SysviewWebEF613.Models
{
public class DisplaySysoutModel
{
SysviewEntities context = new SysviewEntities();
public IEnumerable<vw_soServerInfo> GetSysouts()
{
return context.vw_soServerInfo.ToList();
}
}
}
我的控制器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SysviewWebEF613.Models;
namespace SysviewWebEF613.Controllers
{
public class DisplaySysoutsController : Controller
{
// GET: DisplaySysouts
DisplaySysoutModel model = new DisplaySysoutModel();
public ActionResult Index()
{
return View(model.GetSysouts());
}
}
}
关于EF6.1.3
1) 我正在使用 EF 数据库优先建模。由于历史原因,我正在使用 ObjectContext。
2) 我已经尝试使用代码生成策略 ~ "Legacy ObjectContext" 和 "T4" ~(clean/rebuild 等)都不起作用 ~ 我收到相同的错误消息。
"There was an error running the selected code generator. 'Unable to retrieve metadata for 'xxx'. Could not find the CLR type for 'xxx'.
但是,如果我使用 EF5.0.0 ~ 我能够成功构建我的视图。
背景信息以及我不想使用 EF5.0.0 的原因
1) 我正在使用 MVC5 开发一个新的 Web 前端项目,该项目将替换包含 23 个其他项目的解决方案中的现有 Web 应用程序 ~ 目前使用 EF6.1.3 并且已经使用 EF6.x.x 大约2 年了。
那么,你能理解我不愿意改回使用 EF5.0.0 的心情吗?
2) 因此,出于上述原因 ~ 这就是我尝试使用 EF6.1.3 而不是 EF5.0.0 的原因。
Is it as simple as EF6.xxx does not support MVC5 scaffolding when using EF ObjectContext?
我已经和这个问题斗争了好几天了~我已经广泛研究了这个问题,虽然我在几年前看到过类似的脚手架问题(MVC4 和 EF6xx 的兼容性)~我理解(也许是错误的) MVC5 和 EF6.1.3 现在解决了这些问题,而且我还没有看到其他人在构建视图时遇到问题 ~ 的确 ~ 如果我使用相同的代码 ~ 但使用 EF5.0.0 ~ 一切正常。
我已经仔细检查了我的 app.config (DAL) 和 Web.config (MVC 项目)中的连接字符串 ~ 似乎都是正确的。
你有什么想法或者你有过类似的经历吗?你是如何解决这个问题的?
解决方法其实很简单。
Leave the "Data context class:" menu option empty
如下
我在比较 MVC5/EF 6.1.3 解决方案与 MVC5/EF 5.0.0 解决方案时才注意到这一点。
~ 您没有使用 EF 5.0.0 获得 "Data context class:" 菜单,所以凭直觉,我尝试在我的 EF 6.1.3 解决方案中创建一个视图,将 "Data context class:" 菜单留空并且BINGO ~ 视图生成成功。
在过去的两分钟里,我创建了另外两个模型,每个模型都有一个控制器,并使用脚手架成功构建了可渲染的视图。