[EF] Any+批量新增+批量刪除

        private void Save()
        {
            try
            {
                using (var context = new OAContext())
                {
                    try
                    {

                        string ym = Convert.ToDateTime(dateEnd.EditValue).Year + Convert.ToDateTime(dateEnd.EditValue).Month.ToString().PadLeft(2, '0');
                        if (action == "Add")//批處理新增
                        {


                            //檢查是否存在推薦使用Any
                            if (context.R_RouteGoalBadRate.Any(o => o.YearMonth == ym))
                            {
                                XtraMessageBox.Show("年月【" + ym + "】已批量生成過,請先刪除!");
                            }
                            else
                            {
                                //AsNoTracking()無跟蹤查詢技術(查詢出來的數據不可以進行修改)
                                var psrlist = context.Set<R_ProductSeriesRoute>().AsNoTracking().OrderBy(r => r.ProductSeries).ThenBy(r => r.RouteCode).ToList();
                                if (psrlist == null) return;

                                List<R_RouteGoalBadRate> rgblist = new List<R_RouteGoalBadRate>();
                                foreach (var psr in psrlist)
                                {
                                    R_RouteGoalBadRate rgb = new R_RouteGoalBadRate();
                                    rgb.YearMonth = ym;
                                    rgb.ProductSeries = psr.ProductSeries;
                                    rgb.RouteCode = psr.RouteCode;
                                    rgb.GoalBadRate = psr.GoalBadRate;
                                    rgblist.Add(rgb);

                                }
                                //AddRange批量插入,提高效率
                                context.R_RouteGoalBadRate.AddRange(rgblist);
                                int c = context.SaveChanges();
                                if (c > 0)
                                {
                                    XtraMessageBox.Show("已初始化【" + ym + "】系列-工序-目標不良率!");
                                    this.Close();
                                }
                            }

                        }
                        else if (action == "Delete")
                        {
                            //提示確認是否刪除
                            if (this.Confirm("確定批量刪除【" + ym + "】系列 - 工序 - 目標不良率麼?") == DialogResult.Cancel)
                                return;
                            var deletelist = context.Set<R_RouteGoalBadRate>().OrderBy(r => r.ProductSeries).ThenBy(r => r.RouteCode).ToList();
                            if (deletelist == null) return;

                            //RemoveRange批量刪除,提高效率
                            context.R_RouteGoalBadRate.RemoveRange(deletelist);
                            int c = context.SaveChanges();
                            if (c > 0)
                            {
                                XtraMessageBox.Show("已批量刪除【" + ym + "】系列-工序-目標不良率!");
                                this.Close();
                            }

                        }
                        else if (action == "Edit")
                        {
                            //1.先查詢要修改的原數據
                            R_RouteGoalBadRate psr = context.R_RouteGoalBadRate.Where(a => a.ProductSeries == txtProductSeries.Text.Trim() && a.RouteCode == txtRouteCode.Text.Trim()).FirstOrDefault();
                            //2.設置修改後的值            
                            psr.GoalBadRate = Convert.ToDecimal(txtGoalBadRate.Text.Trim() == "" ? "0.00" : txtGoalBadRate.Text.Trim());
                            int c = context.SaveChanges();
                            if (c > 0)
                            {
                                XtraMessageBox.Show("系列:" + txtProductSeries.Text.Trim() + "工序:" + txtRouteCode.Text.Trim() + "目標不良率已變更!");
                                this.Close();
                            }
                        }
                        

                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("\n錯誤信息:{0}\n", ex.Message);
                        Console.WriteLine(ex.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.ToString(), "警告");
            }
        }

1.批量新增
在這裏插入圖片描述
在這裏插入圖片描述
批量刪除:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章