我有一个会员模型:
public class Member
{
public int ID { get; set; }
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Display(Name = "Password")]
public string Pass { get; set; }
}
使用此dbcontext类:
public class App1Context: DbContext
{
public DbSet<Member> Members { get; set; }
}
迁移和创建数据库之后我使用控制器(Register)将我的新成员数据保存到数据库:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register([Bind("ID", "FirstName", "LastName", "Pass")] Member member)
{
try
{
if (ModelState.IsValid)
{
App1context.Members.Add(member);
await App1context.SaveChangesAsync();
return RedirectToAction("showMember");
}
}
catch (DbUpdateException)
{
ModelState.AddModelError(string.Empty, "Unable to save changes.");
}
return View(member);
}
当系统要执行[await App1context.SaveChangesAsync();
]时,无法保存并catch (DbUpdateException)
代替运行。
为什么不能保存?
答案 0 :(得分:0)
如果没有其他定义,您的会员ID将被指定为您的表的主键;实体框架还将其指定为自动增量(标识)。
如果您尝试在启用了标识的对象中插入自己的ID,并将它们保存到数据库中;你会得到一个INSERT例外。
如果是这种情况,请从BIND []参数中删除ID,EF将自行完成。