亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

DbEntityValidationException-如何輕松分辨出導致錯誤的原因?

DbEntityValidationException-如何輕松分辨出導致錯誤的原因?

C#
料青山看我應如是 2019-12-07 16:23:03
我有一個使用實體框架的項目。在調用SaveChangesmy時DbContext,出現以下異常:System.Data.Entity.Validation.DbEntityValidationException:對一個或多個實體的驗證失敗。有關更多詳細信息,請參見'EntityValidationErrors'屬性。一切都很好,但我不想每次發生此異常時都附加一個調試器。而且,在生產環境中,我無法輕松地連接調試器,因此,我必須竭盡全力來重現這些錯誤。如何查看隱藏在其中的詳細信息DbEntityValidationException?
查看完整描述

3 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

我發現在每條消息中同時獲取POCO類名和屬性名很有用,并希望避免為此而ErrorMessage在所有[Required]標簽上編寫自定義屬性。


以下對Martin代碼的調整為我解決了這些細節:


// Retrieve the error messages as a list of strings.

List<string> errorMessages = new List<string>();

foreach (DbEntityValidationResult validationResult in ex.EntityValidationErrors)

{

? ? string entityName = validationResult.Entry.Entity.GetType().Name;

? ? foreach (DbValidationError error in validationResult.ValidationErrors)

? ? {

? ? ? ? errorMessages.Add(entityName + "." + error.PropertyName + ": " + error.ErrorMessage);

? ? }

}


查看完整回答
反對 回復 2019-12-07
?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

在catch {...}塊中處于調試模式時,打開“ QuickWatch”窗口(ctrl+ alt+ q)并粘貼在其中:


((System.Data.Entity.Validation.DbEntityValidationException)ex).EntityValidationErrors

這將允許您深入到ValidationErrors樹中。這是我發現的即時了解這些錯誤的最簡單方法。


對于只關心第一個錯誤并且可能沒有catch阻止的Visual 2012+用戶,您甚至可以執行以下操作:


((System.Data.Entity.Validation.DbEntityValidationException)$exception).EntityValidationErrors.First().ValidationErrors.First().ErrorMessage


查看完整回答
反對 回復 2019-12-07
  • 3 回答
  • 0 關注
  • 1118 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號