2017-09-14 134 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值它被用作參數。 –

相關問題