我还是MVC的新手,但是我开始对一般情况有所了解,但是我仍然混淆namespace
或using
之类的东西而我认为可能就是这里的情况我错误地引用了一些东西。
问题:我正在尝试使用模型类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
答案 0 :(得分:3)
答案 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