EntityValidationErrors

 

有一段程式碼如下

public ActionResult Create([Bind(Include = "Id,type,date,title,context")] ACTICLE aCTICLE)
{
    if (ModelState.IsValid)
    {
        db.ACTICLESet.Add(aCTICLE);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View();
}

例如在測試時候出現問題

 

那要如何偵錯呢?

走,先點開View Detail去看問題

 

 

由此可知,從Message屬性可以看出問題所在

但其實更詳細資料應該要使用

 

try
{

}
catch (Exception ex)
{
    
    throw ex;
}

但我們不用Exception這麼大的類別

 

我們只取用System.Data.Entity.Validation.DbEntityValidationException類別就好

public ActionResult Create([Bind(Include = "Id,type,date,title,context")] ACTICLE aCTICLE)
{
    try
    {
        if (ModelState.IsValid)
        {
            db.ACTICLESet.Add(aCTICLE);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View();
    }
    catch (Exception ex)
    {
        System.Data.Entity.Validation.DbEntityValidationException DbEntityValidationException = (System.Data.Entity.Validation.DbEntityValidationException)ex;
        throw DbEntityValidationException;
    }
}

使用DbEntityValidationException.EntityValidationErrors.FirstOrDefault().ValidationErrors.FirstOrDefault().ErrorMessage;路徑查看,

原來錯誤為type欄位是必要項

 

 

參考資料:

DbEntityValidationException 類別

資料驗證 ValidationSummary、ValidationMessageFor