MVC5和EF6.1.3脚手架问题
在使用实体框架6.1.3使用MVC5的控制器中通过“添加视图”功能使用脚手架构建视图时遇到问题。
但是,使用Entity Framework 5.0.0一切正常 - 我可以成功构建视图。
使用实体框架6.1.3
当我选择“添加视图”功能时,出现以下错误
“ 运行选定的代码生成器时发生错误'无法检索'xxx'的元数据。找不到'xxx'的CLR类型 。
我的环境是VS2013 Ultimate(Update4),目标框架4.5.1,C#,MVC5,EF6.1.3 Database First ObjectContext,SQL Server 2008。
我的DAL和MVC应用程序在不同的项目中。
我已通过卸载并重新安装Nuget和包管理器控制台命令行提示并确认所有其他引用都正确来检查是否使用相同版本的EF6.1.3。
我的模型类
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等)都无法工作〜我得到相同的错误信息。
“ 运行选定的代码生成器时发生错误'无法检索'xxx'的元数据。找不到'xxx'的CLR类型 。
但是,如果我使用EF5.0.0〜我能够成功建立我的视图。
背景信息和为什么我不想使用EF5.0.0
1)我正在开发一个使用MVC5的新Web前端项目,该项目将替换包含23个其他项目的解决方案中的现有Web应用程序〜目前使用EF6.1.3,并且现在已经使用了EF6.xx。
所以,你可以理解我不愿意改回使用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〜View成功生成。
在过去的两分钟里,我创建了两个其他模型,每个模型都有一个控制器,并使用脚手架成功构建了可渲染视图。
链接地址: http://www.djcxy.com/p/85395.html上一篇: MVC5 and EF6.1.3 Scaffolding problems
下一篇: On Linux, is TLS set up by the kernel or by libc (or other language runtime)?