Control中Action:
public ActionResult SaveEmployee(Employee e,string BtnSubmit)
{
switch (BtnSubmit)
{
case "Save Employee":
{
EmployeeBusinessLayer empBal = new EmployeeBusinessLayer();
e.EmployeeId = 10;
empBal.SaveEmployee(e);
return RedirectToAction("Index");
}
case "Cancel":
{
return RedirectToAction("Index");
}
}
return new EmptyResult();
}
ViewModel层SaveEmployee(Employee e)
public Employee SaveEmployee(Employee e)
{
SalesERPDAL salesDal = new SalesERPDAL();
salesDal.employees.Add(e);
salesDal.SaveChanges();
return e;
}
其中SalesERPDAL时继承自DbContext的派生类,employees时Dbset的一个对象。Emoloyee是数据模型,执行Action时报错。提示EmployeeId(数据库中的一列)为空,运行失败。测试让数据库中的表的数据类型可为空。执行失败。最后,在SaveEmployee(Employee e)中创建Employee对象,还是报错,提示:System.Data.Entity.Infrastructure.DbUpdateConcurrencyException: Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries。
最后在数据库中设置一个主键,并将主键设置为自增长。运行成功。
原因分析:
设置主键和自增长是为了标识具体的某张表和表中的某一行。