2017-09-14 54 views
1

我已经创建了一个验证来检查来自excel文件的值,如果行值已经在数据库中。如果值已经存在,我想创建操作,然后我的记录更新(如果不存在于databese上,然后插入为新记录)。如何更新数据库中已存在的值,如果不存在则插入新记录?

这里完整的代码。

[ValidateAntiForgeryToken] 
public ActionResult ImportDataAgens(HttpPostedFileBase excelfileRekn) 
{ 
    if (excelfileRekn == null || excelfileRekn.ContentLength == 0) 
    { 
     ViewBag.Error = "Please Select File..."; 
     return View("ImportDataAgens"); 
    } 
    else 
    { 
     if (excelfileRekn.FileName.EndsWith("xls") || excelfileRekn.FileName.EndsWith("xlsx")) 
     { 
      string newFileName = DateTime.Now.ToString("yyyyMMddHHmmssfff"); 

      string filename = Path.GetFileName(excelfileRekn.FileName); 
      string DocFileNames = newFileName + "-" + filename; 
      string path = System.IO.Path.Combine(Server.MapPath("~/UploadFile/DataAgen/"), DocFileNames); 

      if (System.IO.File.Exists(path)) System.IO.File.Delete(path); 
       excelfileRekn.SaveAs(path); 
       //read data from file excel 

       Excel.Application application = new Excel.Application(); 
       Excel.Workbook workbook = application.Workbooks.Open(path); 
       Excel.Worksheet worksheet = workbook.ActiveSheet; 
       Excel.Range range = worksheet.UsedRange; 
       List<DMInformasiDataAgen> listTempRekn = new List<DMInformasiDataAgen>(); 

       for (int row = 3; row <= range.Rows.Count; row++) 
       { 

        DMInformasiDataAgen rk = new DMInformasiDataAgen(); 

        /* var NewUserIDAgent = ((Excel.Range)range.Cells[row, 1]).Text; 

        var NewNamaAgen = ((Excel.Range)range.Cells[row, 2]).Text; 
        //rk.NamaAgen = NewNamaAgen;*/ 
        rk.SandiBank = ((Excel.Range)range.Cells[row, 1]).Text; 
        rk.UserIDAgen = ((Excel.Range)range.Cells[row, 2]).Text; 
        rk.NamaAgen = ((Excel.Range)range.Cells[row, 3]).Text; 
        var NewNomorIdentifikasiAgen = ((Excel.Range)range.Cells[row, 4]).Text; 
        rk.NomorIdentifikasiAgen = NewNomorIdentifikasiAgen; 


        if (db.DMInformasiDataAgens.Any(ac => ac.NomorIdentifikasiAgen.Equals((rk.NomorIdentifikasiAgen)))) 
        { 
         int RowNo = row; 
         var hitung = listTempRekn.Count + 4; 
         ModelState.AddModelError("", "Nomor Identifikasi Sudah ada sebelumnya ! Pada baris ke " + hitung + " Pada EXCEL File !"); 
         return View("ImportDataAgens"); 
        } 

        rk.NomordanTanggalPerjanjian = ((Excel.Range)range.Cells[row, 5]).Text; 


        rk.TglPelaksanaan = ((Excel.Range)range.Cells[row, 6]).Value; 

        rk.JenisAgen = ((Excel.Range)range.Cells[row, 7]).Text; 
        rk.KlasifikasiAgen = ((Excel.Range)range.Cells[row, 8]).Text; 
        rk.JenisUsahaAgen = ((Excel.Range)range.Cells[row, 9]).Text; 
        rk.KodePos = ((Excel.Range)range.Cells[row, 10]).Text; 
        rk.LatitudeLongitudinal = ((Excel.Range)range.Cells[row, 11]).Text; 
        rk.KabupatenKota = ((Excel.Range)range.Cells[row, 12]).Text; 
        rk.ElectronicDevice = ((Excel.Range)range.Cells[row, 13]).Text; 
        rk.JaringanKantorBank = ((Excel.Range)range.Cells[row, 14]).Text; 
        rk.KategoriJaringanKantorBank = ((Excel.Range)range.Cells[row, 15]).Text; 
        rk.StatusPerkembanganAgen = ((Excel.Range)range.Cells[row, 16]).Text; 
        rk.Keterangan = ((Excel.Range)range.Cells[row, 17]).Text; 

        if (((Excel.Range)range.Cells[row, 18]).Value == null) 
        { 

         int RowNo = row; 
         var hitung = listTempRekn.Count + 4; 
         ModelState.AddModelError("", "Tolong periksa PERIODE Pada baris ke " + hitung + " Pada EXCEL File !"); 
         return View("ImportDataAgens"); 
        } 

        rk.Periode = ((Excel.Range)range.Cells[row, 18]).Value; 
        string valueA = System.Web.HttpContext.Current.User.Identity.Name; 
        rk.CreateBy = valueA; 
        rk.CreateDate = DateTime.Today; 

        if (db.DMInformasiDataAgens.Any(ac => ac.NomorIdentifikasiAgen.Equals((rk.NomorIdentifikasiAgen)))) 
        { 
         int RowNo = row; 
         var hitung = listTempRekn.Count + 4; 
         ModelState.AddModelError("", "The Number Of Agent Already Exist on " + hitung + " the Template EXCEL File !"); 
         return View("ImportDataAgens"); 
        } 

        if (ModelState.IsValid) 
        { 
         listTempRekn.Add(rk); 
         db.DMInformasiDataAgens.Add(rk); 
         db.SaveChanges(); 
         var hitung = listTempRekn.Count; 
         //range.Rows.Count - 2; 
         TempData["AlertMessage"] = "Import Data Selesai " + hitung + " Records Sudah Tersimpan..."; 
        } 
       } 

       return RedirectToAction("Index", "DataAgens"); 
     } 
     else 
     { 
      ViewBag.Error = "File Type is incorrect <br>"; 
      return View("ImportDataAgens"); 
     } 

    } 

} 

这里的代码WHE我检查已经存在的价值:

**if (db.DMInformasiDataAgens.Any(ac => ac.NomorIdentifikasiAgen.Equals((rk.NomorIdentifikasiAgen)))) 
{ 
    int RowNo = row; 
    var hitung = listTempRekn.Count + 4; 
    ModelState.AddModelError("", " The Number Of Agent Already Exist on " + hitung + " the Template EXCEL File !"); 
    return View("ImportDataAgens"); 
}** 

如何,如果该值已经存在(数字剂),然后我的记录更新,如果没有则插入新记录创建行动?

回答

2
var chkItem = x.firstOrDefault(your condition); 
if(chkItem != null) 
{ 
    //update your record. 
} 
else{ 
    //insert into database 
} 
+0

请发送样品查询更新请从我的案例rk.NomorIdentifikasiAgen值它被用作参数。 –

相关问题