实体框架4错误

时间:2011-03-22 15:17:49

标签: asp.net-mvc-3 entity-framework-4

我使用Entity Framework Code First方法创建了MVC3应用程序。我的模型非常简单:

public class Employee
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int YearsAtCompany { get; set; }
}

和上下文类是

public class EmployeeDB : DbContext
    {
        public DbSet<Employee> Employees { get; set; }
    }

和控制器看起来像这样:

EmployeeDB context = new EmployeeDB();

        public ActionResult Index()
        {
            return View(context.Employees);
        }      
    }

我创建了EmployeesDb.mdf和Employee表。

但是我收到了这个错误:

The model item passed into the dictionary is of type 'System.Data.Entity.DbSet`1[DFEmployees.Models.Employee]', but this dictionary requires a model item of type 'DFEmployees.Models.Employee'. 

[更新]

@model DFEmployees.Models.Employee

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

请建议解决方案。

2 个答案:

答案 0 :(得分:1)

看起来你的观点正在等待一个单一的员工,你正在试图用一个DBSet员工来填补这个观点。

要解决此问题,您可以将视图的@model设置为IEnumerable员工,或者只向视图发送一名员工,具体取决于您在视图中显示的内容。

编辑:我认为此问题与前一个问题无关。检查此链接,我希望它可以帮助您:LINK

答案 1 :(得分:0)

您的控制器操作会返回员工列表,以便在视图中分别调整您的模型:

@model IEnumerable<DFEmployees.Models.Employee>

或者,如果您想使用单个员工,请确保将单个员工传递给视图:

public ActionResult Index()
{
    return View(context.Employees.FirstOrDefault());
}

然后你可以:

@model DFEmployees.Models.Employee