MVC5和EF6.1.3脚手架问题

时间:2015-05-20 15:56:24

标签: c# entity-framework asp.net-mvc-5 asp.net-4.5

尝试使用脚手架通过"添加视图"来构建视图时遇到问题使用 MVC5 Entity Framework 6.1.3 在控制器中运行。

但是,使用 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。

我的模型类

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)我尝试过使用代码生成策略〜&#34; Legacy ObjectContext&#34;和&#34; T4&#34; 〜(清理/重建等)既不工作〜我得到相同的错误信息。

  

&#34; 运行所选代码生成器时出错。 &#39;无法   检索&#39; xxx&#39;的元数据。无法找到&#39; xxx&#39; 的CLR类型。

但是,如果我使用EF5.0.0,我可以成功构建我的视图。

背景信息&amp;为什么我不想使用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的原因。

  

使用EF ObjectContext时,EF6.xxx是否不支持MVC5脚手架?

我几天来一直在与此作斗争〜我已经广泛研究过这个问题,虽然我已经看到几年前报道的类似脚手架问题(兼容性MVC4&amp; EF6xx)〜我理解(可能是错误的)MVC5和EF6.1.3现在解决了那些问题,我还没有看到其他人在构建View时遇到问题〜确实〜如果我使用相同的代码〜但是使用EF5.0.0~一切正常。

我已经在app.config(DAL)和Web.config(MVC项目)中仔细检查了我的连接字符串〜看起来都很正确。

您是否有任何想法或者您遇到过类似的问题以及您采取了哪些措施来解决此问题?

1 个答案:

答案 0 :(得分:4)

解决方案实际上非常简单。

  

保留&#34;数据上下文类:&#34;菜单选项为空

如下

enter image description here

当我将MVC5 / EF 6.1.3解决方案与我的MVC5 / EF 5.0.0解决方案进行比较时,我才接受了这一点。

〜你没有得到&#34;数据上下文类:&#34;菜单与EF 5.0.0,所以在预感,我试图在我的EF 6.1.3解决方案中创建一个视图离开&#34;数据上下文类:&#34;菜单空和BINGO~View生成成功。

在过去的两分钟里,我创建了另外两个模型,每个模型都带有一个控制器,并使用脚手架成功构建了可渲染的视图。