private static void DeleteDuplicateUserIncomes(UserIncomeModel data) { using (var tranasactionScope = new TransactionScope()) { using (var context = new Restaurants()) { var branch = data.Master.Select(x => x.Branch_No).FirstOrDefault(); //var date = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); var allEntities = context.User_Income .Where(x => x.Branch_No == branch) .ToList(); var similarEntities = data.Master.Intersect(allEntities, new LambdaComparer <User_Income>( (x, y) => x.Branch_No == y.Branch_No && x.Income_Date == y.Income_Date && x.User_ID == y.User_ID)).ToList(); foreach (var entity in similarEntities) { data.Master.Remove(entity); } EFBatchOperation.For(context, context.User_Income).InsertAll(data.Master); tranasactionScope.Complete(); } } }
public IHttpActionResult InsertUserIncome(UserIncomeModel data) { try { using (Restaurants context = new Restaurants()) { using (var dbContextTransaction = context.Database.BeginTransaction()) { //try //{ data.Master.ForEach(x => { x.B_Sync = true; x.SyncDate = DateTime.Now; }); context.User_Income.AddRange(data.Master); context.SaveChanges(); dbContextTransaction.Commit(); //} //catch (Exception ex) //{ // dbContextTransaction.Rollback(); // return Ok(new AjaxResponse<object>() { Success = false, ErrorMessage = ex.GetLastException() }); //} } } } catch (Exception ex) { var error = ex as SqlException; if (error != null && error.Number == 2627 && ex.GetLastException().Contains("Violation of PRIMARY KEY constraint")) { DeleteDuplicateUserIncomes(data); } if (ex.GetLastException().Contains("Cannot insert duplicate key row in object")) { DeleteDuplicateUserIncomes(data); } else { return(Ok(new AjaxResponse <object>() { Success = false, ErrorMessage = ex.GetLastException() })); } } return(Ok(new AjaxResponse <object>() { Success = true, SuccessMessage = "Successfully" })); }