ASP.net MVC中更新时违反唯一键约束
有人能检查一下这个代码吗,我真的不明白为什么我在尝试更新记录时违反了unique。用于创建新记录的代码工作正常,但当我尝试使用它进行更新时,它发出了违规 控制器:ASP.net MVC中更新时违反唯一键约束,asp.net,asp.net-mvc,linq-to-sql,repository-pattern,Asp.net,Asp.net Mvc,Linq To Sql,Repository Pattern,有人能检查一下这个代码吗,我真的不明白为什么我在尝试更新记录时违反了unique。用于创建新记录的代码工作正常,但当我尝试使用它进行更新时,它发出了违规 控制器: [AcceptVerbs(HttpVerbs.Post)] public ActionResult Edit(User user) { if (ModelState.IsValid) { userRepository.SaveUser(user);
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(User user)
{
if (ModelState.IsValid)
{
userRepository.SaveUser(user);
return RedirectToAction("List");
}
else
return View("Edit");
}
用户报告:
public void SaveUser(User user)
{
user.LAST_ACTIVITY = DateTime.Now;
if (user.USER_ID != 0)
{
usersTable.Attach(user);
usersTable.Context.Refresh(RefreshMode.KeepCurrentValues, user);
}
else
{
usersTable.InsertOnSubmit(user);
}
usersTable.Context.SubmitChanges();
}
我犯了一个错误:
无法刷新指定的文件
对象对象不再存在
在数据库中
当我为了测试的目的尝试这样更改userRepo时
public void SaveUser(User user)
{
user.LAST_ACTIVITY = DateTime.Now;
usersTable.Attach(user);
usersTable.Context.Refresh(RefreshMode.KeepCurrentValues, user);
usersTable.Context.SubmitChanges();
}
我想知道这个板上是否有人能找出我在这个问题上的错误:)
非常感谢,并祝您万事如意。:) 忽略模型绑定上的ID
[Bind(Exclude= "Id")]
public ActionResult Edit(User user)
善良
Dan看起来您需要解决冲突,即使您告诉它“KeepCurrentValues”,请在提交更改之前尝试此操作
foreach(ObjectChangeConflict conflict in usersTable.Context.ChangeConflicts)
{
foreach(MemberChangeConflict memberConflict in conflict.MemberConflicts)
{
memberConflict.Resolve(RefreshMode.KeepCurrentValues);
}
}
这将不起作用,因为ID是Int,Int不是Int,Int不是可为null的类型,当然,如果将其设置为exclude,默认情况下它将为0。如果为0,将创建新记录,而不是更新记录。:)