Why is Entity Framework 5.0 inserting duplicate records in the Database in uncertain behavior when used .AddAsync() method for adding data.
I have checked the existing value from records before inserting but still occurs duplication of value in the Database.
Here is my code.
if (response.Item1.PurchasesItem.Any()) { foreach (var rec in response.Item1.PurchasesItem) { try { var exist = await _cFCDbContext.PurchaseSaleLog.Where(a => a.IsActive && a.ProductCode == rec.ItemId.Trim() && a.DaxDate.Equals(rec.PurchDate) && !a.IsDeleted).OrderByDescending(a => a.Id).FirstOrDefaultAsync(); if (exist == null) { var purchase = new PurchaseSaleLog() { ProductCode = rec.ItemId, VendorId = rec.VendorId, Type = ServiceType, PUOM = rec.UOM, Quantity = (rec.PurchQty.Equals("")) ? 0 : Convert.ToInt32(rec.PurchQty), Branch = rec.Branch, BranchStock = (rec.BranchStock.Equals("")) ? 0 : Convert.ToInt32(rec.BranchStock), DaxDate = rec.PurchDate, IsActive = true, IsDeleted = false, CreatedBy = userId, CreatedDate = DateTime.UtcNow, ModifiedBy = userId, ModifiedDate = DateTime.UtcNow }; await _cFCDbContext.PurchaseSaleLog.AddAsync(purchase); await _cFCDbContext.SaveChangesAsync().ConfigureAwait(false); } else { exist.ProductCode = rec.ItemId; exist.VendorId = rec.VendorId; exist.Type = ServiceType; exist.Quantity = (rec.PurchQty.Equals("")) ? 0 : Convert.ToInt32(rec.PurchQty); exist.Branch = rec.Branch; exist.PUOM = rec.UOM; exist.BranchStock = (rec.BranchStock.Equals("")) ? 0 : Convert.ToInt32(rec.BranchStock); exist.DaxDate = rec.PurchDate; exist.ModifiedBy = userId; exist.ModifiedDate = DateTime.UtcNow; _cFCDbContext.PurchaseSaleLog.Update(exist); await _cFCDbContext.SaveChangesAsync().ConfigureAwait(false); } } catch (Exception ex) { continue; } } }