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");
}**
如何,如果該值已經存在(數字劑),然後我的記錄更新,如果沒有則插入新記錄創建行動?
請發送樣品查詢更新請從我的案例rk.NomorIdentifikasiAgen值它被用作參數。 –