エンティティ検証誤差の詳細な解釈
エラーメッセージが発生した場合、「1つ以上のエンティティが失敗しました。「エンティティ検証エラー」属性を表示するための詳細を学ぶには、検証エラーグループにアクセスできます。
検証エラーを確認してください
entityValidationerrs属性には検証障害のエンティティが含まれていますが、検証エラーには属性レベルのエラーリストが含まれています。
<code class="language-csharp">try { // 代码 context.SaveChanges(); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine("实体: \"{0}\", 状态: \"{1}\"", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach(var ve in eve.ValidationErrors) { Console.WriteLine("- 属性: \"{0}\", 错误: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; }</code>
高度な改善
属性値を表示:
<code class="language-csharp">foreach(var ve in eve.ValidationErrors) { Console.WriteLine("- 属性: \"{0}\", 值: \"{1}\", 错误: \"{2}\"", ve.PropertyName, eve.Entry.CurrentValues.GetValue<object>(ve.PropertyName), ve.ErrorMessage); }</code>
詳細なメッセージを含むカスタム異常:
この例外は、メッセージをフォーマットすることによって検証されています:<code class="language-csharp">Debug.Write("- 属性: \"{0}\", 值: \"{1}\", 错误: \"{2}\"", ve.PropertyName, eve.Entry.CurrentValues.GetValue<object>(ve.PropertyName), ve.ErrorMessage);</code>
SaveChangesの再巻き:
これにより、検証の詳細がエラーログ(EM、エルマ)に表示されることが保証されます。
以上がエンティティフレームワークでエンティティの検証エラーを効果的に処理およびデバッグする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。