在IActionResult(实体框架核心)中创建的重复记录

时间:2019-08-16 08:51:47

标签: asp.net-core entity-framework-core

我不知道为什么以下代码有时会创建具有不同记录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");
        }
    }

1 个答案:

答案 0 :(得分:0)

检查问题是否不是由于日期比较filter-branch或用户名中的某些特殊字符引起的。

哦,尝试下面的代码,让我知道是否有所更改。

x.StartForm == LeaveVM.TodayDate