SaveChange()の例外調査
#ASP.Net #MVC
参考:
EntityFramework SaveChange()時の例外発生時にSQLのエラーを表示させる - Qiita
経緯:
Entity FrameworkのSaveChange()実行時、どの部分でエラーが起きているのかわからなかった。
解決:
SaveChange実行前に、
db.Configration.ValidateOnSaveEnabled = false;
を設定し、
try
{
db.Configration.ValidateOnSaveEnabled = false;
db.SaveChange();
}
catch (System.Data.Entity.Validation.DbEntityValidationException ex)
{
foreach (var errors in ex.EntityValidationErrors)
{
foreach (var error in errors.ValidationErrors)
{
// VisualStudioの出力に表示
System.Diagnostics.Trace.WriteLine(error.ErrorMessage);
}
}
throw ex;
}
でキャッチするとOK。
※参照元ではdb.Configuration.ValidateOnSaveEnabled = false;を設定しておいたほうがデバッグに便利としているが、デフォルトでTrueの理由とFalseにした場合のデメリット等調査要。