コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
        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"
            }));
        }