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にした場合のデメリット等調査要。


この記事が気に入ったらサポートをしてみませんか?