添加视图 - 无法检索元数据

时间:2014-05-21 13:36:02

标签: c# asp.net-mvc

我还是MVC的新手,但是我开始对一般情况有所了解,但是我仍然混淆namespaceusing之类的东西而我认为可能就是这里的情况我错误地引用了一些东西。

问题:我正在尝试使用模型类EmployeeInfo添加List带有EmployeeInfo模板的视图,其中包含数据上下文类:{ {1}}

自动生成将不会执行。当我在Controller的方法EmployeeInfo中右键单击时。我选择“添加视图”选项,填写信息,然后点击添加,在脚手架加载屏幕中,它给出了如下错误。

  

运行所选代码生成器时出错:'无法执行   检索'WebApplication2.Models.EmployeeInfo'的元数据。'

我的控制器

MoviesEntities

我的背景

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using WebApplication2.Entities;
using WebApplication2.Models;

namespace WebApplication2.Controllers
{
    public class MoviesController : Controller
    {
        private MoviesEntities db = new MoviesEntities();

        // GET: /Movies/
        public ActionResult Index()
        {
            return View(db.Movies.ToList());
        }

        public ActionResult EmployeeInfo()
        {  
            var query =
            from m in db.Movies
            join me in db.MovieEmployees 
            on m.ID equals me.movieID
            join e in db.Employees
            on me.employeeID equals e.ID
            join r in db.Roles
            on me.roleID equals r.ID

            select new EmployeeInfo() {Name = e.Name, Role = r.RoleType, Birthday = e.Birthday };

            return View(query.Distinct().ToList());
          }
    }
}

//------------------------------------------------------------------------------ // <auto-generated> Built from database Movie </auto-generated> //------------------------------------------------------------------------------ namespace WebApplication2.Entities { using System; using System.Data.Entity; using System.Data.Entity.Infrastructure; using movieLayer; using WebApplication2.Models; public partial class MoviesEntities : DbContext { public MoviesEntities() : base("name=MoviesEntities") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { throw new UnintentionalCodeFirstException(); } public virtual DbSet<Employee> Employees { get; set; } public virtual DbSet<Location> Locations { get; set; } public virtual DbSet<Movie> Movies { get; set; } public virtual DbSet<MovieEmployee> MovieEmployees { get; set; } public virtual DbSet<Role> Roles { get; set; } public virtual DbSet<Show> Shows { get; set; } public virtual DbSet<sysdiagram> sysdiagrams { get; set; } public System.Data.Entity.DbSet<WebApplication2.Models.EmployeeInfo> EmployeeInfoes { get; set; } } } 的模型:

EmployeeInfo

5 个答案:

答案 0 :(得分:3)

我通过右键单击控制器操作添加脚手架视图时遇到的问题是将“数据上下文类”字段留空。

enter image description here

我不完全确定为什么会这样,但我从ASP.NET forums找到了这个方法。

答案 1 :(得分:2)

确保首先重建解决方案。如果你刚刚添加了一个新类,脚手架引擎可能实际上并不知道它,但是,如果项目没有编译。

如果这不起作用,请关闭Visual Studio并重新启动。我已经看到脚手架的东西在VS2012中没有任何理由变得很糟糕,重启通常会解决它。

答案 2 :(得分:0)

问题是EmployeeInformation只是控制器将其数据转储到View查询中的“模板”。

EmployeeInformation实际上并不是现有的表格,因此我必须创建一个模型,即EmpleeInfoModels来保存数据,然后传递给我的自定义视图。

方法

public ActionResult EmployeeInformation()
        {
            var query =
            from m in db.Movies

            join me in db.MovieEmployees
            on m.ID equals me.movieID

            join e in db.Employees
            on me.employeeID equals e.ID

            join r in db.Roles
            on me.roleID equals r.ID

            select new EmployeeInfoModels() { Name = e.Name, RoleType = r.RoleType, Birthdate = e.Birthday, eID = e.ID };

            return View(query.Distinct().ToList().Distinct());
        }

模型

namespace WebApplication2.Models
{
    public class EmployeeInfoModels
    {
        public int mID { get; set; }
        public int eID { get; set; }
        public string Name { get; set; }
        public string RoleType { get; set; }
        public DateTime Birthdate { get; set; }
    }
}

我的观点刚刚进入

@model IEnumerable<WebApplication2.Models.EmployeeInfoModels>

答案 3 :(得分:0)

再添一个提示:如果web.config中的任何元素中有任何configSource属性,则可能会出现此错误。我注释掉了包含configSource属性的所有元素,然后再次运行脚手架,它就像一个魅力。一旦完成,我取消注释了web.config中的元素,我就完全了。

答案 4 :(得分:-1)

检查添加视图流行扬声器中的MyView选项,然后在从控制器添加视图时更正DataContextClass

Refer Screenshot