我不知道为什么以下代码有时会创建具有不同记录ID的重复记录。我怀疑用户多次发帖。如果是这样,我应该如何更改代码以防止这种情况发生?
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Add(LeaveHandleViewModel LeaveVM)
{
//Check if record exists
if (_context.InOutRecords.Where(x => x.User == User.Identity.Name
&& x.StartForm == LeaveVM.TodayDate).Count() > 0)
{
//Modify record
var LeaveRecord = _context.InOutRecords.Where(x => x.Email == User.Identity.Name
&& x.StartForm == LeaveVM.TodayDate).FirstOrDefault();
LeaveRecord.Remarks = LeaveVM.TodayRemarks;
var entry = _context.Entry(LeaveRecord);
entry.State = EntityState.Modified;
_context.SaveChanges();
return RedirectToAction("Index");
}
else
{
//create new record
Leave LeaveRecord = new Leave();
LeaveRecord.Remarks = LeaveVM.TodayRemarks;
LeaveRecord.StartForm = LeaveVM.TodayDate;
LeaveRecord.User = User.Identity.Name;
LeaveRecord.CreateDate = DateTime.Now;
_context.InOutRecords.Add(LeaveRecord);
_context.SaveChanges();
return RedirectToAction("Index");
}
}
答案 0 :(得分:0)
检查问题是否不是由于日期比较filter-branch
或用户名中的某些特殊字符引起的。
哦,尝试下面的代码,让我知道是否有所更改。
x.StartForm == LeaveVM.TodayDate