使用Entity Framework在處理資料存入資料庫是非常方便,但是缺點就是因為太自動幫我們都做好很多處理,導致有時候發生問題,就不知道問題在哪邊增加Debug的困難性,例如下圖,當我使用SaveChanges,就出現這個Exception,但是,這錯誤實在不知道在那邊,從這exception也無法明確地確定問題所在
不過,大概心裡有數因該是資料跟欄位上有問題,可是,以這個案例來說,資料表欄位超多,不可能一個欄位一個欄位去做確認,甚至是去比對資料。若是可以再多一些資訊,就更好了。從錯誤訊息是要我們去看EntityValidationErrors
屬性去看更多資訊。千萬不要從原本的Exception
去找EntityValidationErrors
屬性,這樣根本還是找不到錯誤。因此,若之後有遇到這樣錯誤訊息,建議可以使用DbEntityValidationException
類別幫忙我們找出問題
DbEntityValidationException 類別: Represents an exception thrown from SaveChanges() when the validation of entities fails.
從這個類別中就有EntityValidationErrors
屬性可以使用了,就可以輕易找出問題所在
使用一個簡單範例,找出當錯誤發生時候,秀出Entity到底是哪邊出問題