当我想保存我的 table 时,db.savechanges() 给出一个错误,因为该数据之前已被使用

When I want to save my table, db.savechanges() gives an error because that data has been used before

在连接到我的 .NET MVC 项目的数据库中,其中一个表包含唯一键。如果 db.savechanges() 操作失败,如何检查此值是否已输入或如何显示错误消息?

///我的控制器

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "Hayvan_id,Kupe_no,Kilo,Irk,Detay,Lokasyon,Turu,Hisse,Kayit_Tarihi,fiyat")] Hayvan_Tablosu hayvan_Tablosu)
    {
        var SaveTrue = db.SaveChanges();
        if (ModelState.IsValid)
        {
            db.Hayvan_Tablosu.Add(hayvan_Tablosu);
            db.SaveChanges(); ///I am getting the error here.
            return RedirectToAction("Index");
        }

        return View(hayvan_Tablosu);
    }

您可以在try/catch语句中执行您的操作:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Hayvan_id,Kupe_no,Kilo,Irk,Detay,Lokasyon,Turu,Hisse,Kayit_Tarihi,fiyat")] Hayvan_Tablosu hayvan_Tablosu)
{ 
    try {
      var SaveTrue = db.SaveChanges();
      if (ModelState.IsValid)
      {
        db.Hayvan_Tablosu.Add(hayvan_Tablosu);
        db.SaveChanges(); ///I am getting the error here.
        return RedirectToAction("Index");
      }
    }
    catch(Exception e) {
        // Do something with your error.
        // E.g.:
        return View(new { Error = true, Message = e.Message });
    }
    return View(hayvan_Tablosu);
}

您可以使用 db.SaveChanges()

中的 return 值
int val = db.SaveChanges();
if(val > 0)
{
 // the value was entered
}
else
{
 // error message
}

最好在开始时检查 UNIQUE KEY 是否已经存在。

if(db.Hayvan_Tablosu.Any(x=>x.UniqueColumn == hayvan_Tablosu.UniqueColumn))
{
ModelState.AddModelError("", "UniqueColumn Already Exists");
return View(hayvan_Tablosu);
}
else
{
//add to list and call save changes.
}