首页 > 解决方案 > 错误内部异常时如何在更新条目时忽略错误记录以获取详细信息

问题描述

如何在更新实体时忽略写入错误的记录。

错误显示

   private void btn_salary_Click(object sender, EventArgs e)
    {
        if (sg.HasRows(lib.tbl_pay) == true && chkShowOnly.Checked == false)
        {
            lib.ShowMessage(lib.tbl_pay + " has data can not import");
            return;
        }
        sql = "SELECT * FROM PAY WHERE BankAc IS NOT null";
        q1 = new DBFHelper(txt_olddir.Text).FillDataTable(sql);
        dataGridView1.DataSource = q1;
        if (chkShowOnly.Checked == true) return;
        DateTime xdate = sg.ServerDate;
        for (int x = 0; x < q1.Rows.Count; x++)
        {
            PAY q11 = new PAY
            {

                BANKAC = sg.AsString(q1.Rows[x]["BankAc"]),
                MDATE = sg.AsDate(q1.Rows[x]["MDATE"].ToString()),
                BYEAR = sg.AsDate(q1.Rows[x]["MDATE"].ToString()).Year,
                BMONTH = sg.AsDate(q1.Rows[x]["MDATE"].ToString()).Month,
                PERPAY = q1.AsDecimal("PERPAY", x),
                BASIC = q1.AsDecimal("PERPAY", x),
                DARATE = q1.AsDecimal("DA", x),
                NEWDA = q1.AsDecimal("NEWDA",x),
                ADNDA = q1.AsDecimal ("ADNDA",x),
                HRA = q1.AsDecimal ("HRA",x),
                ENTREL = q1.AsDecimal("ENTREL",x),
                EXTRA = q1.AsDecimal("EXTRA",x),
                INSKNP = q1.AsDecimal("INSGKP",x),
                MEDI = q1.AsDecimal("MEDI",x),
                RD = q1.AsDecimal("RD",x),
                GPF = q1.AsDecimal("GPF",x),
                GPFLOAN= q1.AsDecimal("GPFLOAN",x),
                CPF = q1.AsDecimal("CPF",x),
                CPFLOAN = q1.AsDecimal("CPFLOAN",x),
                LICPRE = q1.AsDecimal("LICPRE",x),
                LICLOAN = q1.AsDecimal("LICLOAN",x),
                ITAX = q1.AsDecimal("ITAX",x),
                JSBLOAN = q1.AsDecimal("JSBLOAN",x),
                NSBLOAN = q1.AsDecimal("NSBLOAN",x),
                STEMP = q1.AsDecimal("STEMP",x),
                PROFUND = q1.AsDecimal("PROFUND",x),
                TYPE_ATX = q1.AsString("TYPE",x),
                GRADE = q1.AsString("GRADE",x),
                TFUND = q1.AsDecimal("TFUND",x),
                GFUND = q1.AsDecimal("GFUND",x),
                OBCLOAN = q1.AsDecimal("OBCLOAN",x),
                OTH1_LOAN = q1.AsDecimal("OTH1_LOAN",x),
                OTH2_LOAN = q1.AsDecimal("OTH2_LOAN",x),
                BSTGBANK = q1.AsDecimal("BSTGBANK",x),
                EARNING = q1.AsDecimal("EARNING",x),
                TOTDED = q1.AsDecimal("TOTDED",x),
                NETPAY = q1.AsDecimal("NETPAY",x),
                CITYALW = q1.AsDecimal("CITYALW",x),
                user_code = lib.user_code,
                modi_dt = xdate
            };
            g1.PAYs.Add(q11);
            lbl_counter.Text = x.ToString() + " Records Inserted";
            Application.DoEvents();
        }



        try
        {
            g1.SaveChanges();
        }
       catch (Exception ex)
        {
            string emsg = ex.Message;
            if (ex.InnerException != null)
            {
                emsg = emsg + ex.InnerException.Message;
            }
                 
            if (ex.InnerException.InnerException != null)
            {
                emsg = emsg + ex.InnerException.InnerException.Message;
            }
                 
            if (ex.InnerException.InnerException.InnerException != null)
            {
                emsg = emsg + ex.InnerException.InnerException.InnerException.Message;
            }
               
            lib.ShowMessage(emsg);
        }
     
        lib.ShowMessage("Done..");
    }

标签: c#.netentity-frameworkentity-framework-6

解决方案


推荐阅读