C# 类型为';系统无效操作异常';在EntityFramework.dll中发生,但未在用户代码中处理

C# 类型为';系统无效操作异常';在EntityFramework.dll中发生,但未在用户代码中处理,c#,asp.net,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc 4,我正在尝试制作部门名称的下拉列表。我正在使用MVC5。我看到了太多关于堆栈溢出的解决方案,但我从未找到与MVC5相关的有价值的解决方案 Database Name : AppraisalDBContext Table Name : Department Column Name : deptID (Primarykey) deptName (department name) Description 我得到这个错误: An excepti

我正在尝试制作部门名称的下拉列表。我正在使用MVC5。我看到了太多关于堆栈溢出的解决方案,但我从未找到与MVC5相关的有价值的解决方案

Database Name : AppraisalDBContext
Table Name :  Department
Column Name : deptID (Primarykey)
              deptName (department name)
              Description 
我得到这个错误:

An exception of type 'System.InvalidOperationException' occurred in  EntityFramework.dll but was not handled in user code

Additional information: The model backing the 'AppraisalDBContext' context has changed since the database was created.Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?
代码:

控制器类名称(DepartmentController.cs):

模型类名称(evalumatalbcontext.cs):

namespace evaluationproject.Models
{
公共类评估bContext:DbContext
{
公共数据库集部门{get;set;}
}
}
Index.cshtml:

@using (Html.BeginForm())
{
<p>
    Genre: @Html.DropDownList("depts", "All")
    <input type="submit" value="Filter" />
</p>
}
@使用(Html.BeginForm())
{

类型:@Html.DropDownList(“部门”、“全部”)

}
错误消息详细说明了您需要知道的所有信息:

<>附加信息:支持“AddialdBrnCurror”上下文的模型自创建数据库以来发生了变化。考虑使用代码第一迁移来更新数据库(?

) 这意味着
评估bContext
中使用的某个类已更改,但数据库尚未更新,因此现在已过期。您需要使用代码优先迁移更新此类


这是一个很好的过程。lan的回答对我很有帮助。问题是,我已经更新了模型类,但数据库仍然有旧的定义。我认为初始化器ClearDatabaseSchemaIfModelChanges应该在新调用时重置数据库,这是我在msdn上读到的。结果是,初始化器没有被调用。所以我使用以下命令手动删除了数据库:

new MyDbContext().Database.Delete();
在WebApiConfig的register()方法中


之后,在下次启动时调用初始值设定项并更新db模式。

谢谢lan。此链接对我也有帮助:
namespace appraisalProject.Models
{
    public class AppraisalDBContext:DbContext
    {
        public DbSet<Departments> Department { get; set; }
    }
}
@using (Html.BeginForm())
{
<p>
    Genre: @Html.DropDownList("depts", "All")
    <input type="submit" value="Filter" />
</p>
}
new MyDbContext().Database.Delete();