我正在尝试为部门名称制作下拉列表。我正在使用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):
public ActionResult Index(string depName)
{
var DeptLst = new List<string>();
var GenreQry = from d in db.Department
orderby d.deptName
select d.deptName;
DeptLst.AddRange(GenreQry); // Here I am confusing
ViewBag.depName = new SelectList(DeptLst); // Here I am confusing
var depts = from m in db.Department // Here I am confusing
select m;
return View(depts);
}
模型类名称(Departments.cs):
namespace appraisalProject.Models
{
[Table("Department")]
public class Departments
{
[Key]
public int deptId { get; set; }
public string deptName { get; set; }
public string Description { get; set; }
}
}
模型类名称(AppraisalDBContext.cs):
namespace appraisalProject.Models
{
public class AppraisalDBContext:DbContext
{
public DbSet<Departments> Department { get; set; }
}
}
Index.cshtml:
@using (Html.BeginForm())
{
<p>
Genre: @Html.DropDownList("depts", "All")
<input type="submit" value="Filter" />
</p>
}
答案 0 :(得分:6)
错误消息详细说明了您需要知道的所有内容:
附加信息:支持“评估文化”的模型&#39;自创建数据库以来,上下文已发生更改。考虑使用Code First Migrations更新数据库(http://go.microsoft.com/fwlink/?
这意味着AppraisalDBContext
中使用的某个类已更改,但数据库尚未更新,因此现已过期。您需要使用Code First迁移来更新它。
这是一个很好的blogpost引导您完成整个过程。
答案 1 :(得分:2)
new MyDbContext().Database.Delete();
在WebApiConfig的寄存器()Methode。
中之后,在下次启动时调用初始化程序,并更新db模式。