Jiv*_*lly 7 c# entity-framework asp.net-4.5 asp.net-mvc-5
尝试使用带有Entity Framework 6.1.3的MVC5在控制器中通过"添加视图"功能使用脚手架构建视图时遇到问题.
但是,使用Entity Framework 5.0.0一切都很完美〜我可以成功构建一个视图.
使用Entity Framework 6.1.3
当我选择"添加视图"功能时,我收到以下错误
" 运行所选代码生成器时出错.'无法检索'xxx'的元数据.无法找到'xxx'的CLR类型.
我的环境是VS2013 Ultimate(Update4),目标框架4.5.1,C#,MVC5,EF6.1.3数据库第一个ObjectContext,SQL Server 2008.
我的DAL和MVC应用程序在不同的项目中.
我通过Nuget和Package Manager控制台命令行提示卸载并重新安装并且所有其他引用都是正确的,检查了两者都使用相同版本的EF6.1.3.
我的Model类
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的控制器
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());
}
}
}
Run Code Online (Sandbox Code Playgroud)
关于EF6.1.3
1)我使用的是EF数据库优先建模.由于历史原因,我使用的是ObjectContext.
2)我已经尝试使用代码生成策略〜"Legacy ObjectContext"和"T4"〜(清理/重建等)都不起作用〜我得到相同的错误消息.
" 运行所选代码生成器时出错.'无法检索'xxx'的元数据.无法找到'xxx'的CLR类型.
但是,如果我使用EF5.0.0~我能够成功构建我的View.
背景信息以及为什么我不想使用EF5.0.0
1)我正在使用MVC5开发一个新的Web前端项目,该项目将替换包含23个其他项目的解决方案中的现有Web应用程序〜目前使用EF6.1.3并且已经使用EF6.xx大约2年了.
那么,您可以理解我不愿意改回使用EF5.0.0吗?
2)因此,由于上述原因〜这就是我尝试使用EF6.1.3而不是EF5.0.0的原因.
是否像使用EF ObjectContext时EF6.xxx不支持MVC5脚手架一样简单?
我已经和它斗争了好几天〜我已经广泛研究了这个问题,虽然我已经看到了几年前报道的类似脚手架问题(兼容性MVC4和EF6xx)〜我理解(可能是错误的)MVC5和EF6.1.3现在已经解决了这些问题,我还没有看到其他人在构建View时遇到问题〜确实〜如果我使用相同的代码〜但是使用EF5.0.0~一切正常.
我在app.config(DAL)和Web.config(MVC项目)中仔细检查了我的连接字符串〜看起来都很正确.
你有任何想法或者你有过类似的经历,你做了什么来解决这个问题?
解决办法其实很简单。
将“数据上下文类:”菜单选项留空
如下
当我将 MVC5 / EF 6.1.3 解决方案与 MVC5 / EF 5.0.0 解决方案进行比较时,我才注意到这一点。
~ 在 EF 5.0.0 中,您没有获得“数据上下文类:”菜单,因此凭直觉,我尝试在 EF 6.1.3 解决方案中创建一个视图,将“数据上下文类:”菜单留空,BINGO ~ 视图生成成功。
在最后两分钟内,我创建了另外两个模型,每个模型都有一个控制器,并使用脚手架成功构建了可渲染视图。