問題原因:觸發了定義的實例字段校驗規則。比如不為空字段為空了,或者字段超長,我的問題是不為空的字段為空導致的。
解決方案
第一種:ValidateOnSaveEnabled : 修改這個屬性為 false 不讓做實體驗證 (不太推薦,雖然不驗證實體了,但是操作數據的時候還會報錯)。
第二種:找出異常信息,解決問題。
發生這個錯誤會觸發DbEntityValidationException異常,這個異常會有詳細的異常信息說明是哪個字段,出現了什么錯誤,接下來我們try catch輸出錯誤
try { changes = base.SaveChanges(); } catch(DbEntityValidationException dbe ) { foreach(var va in dbe.EntityValidationErrors) { foreach(var err in va.ValidationErrors) { string strerr = $"Class:{va.Entry.Entity.GetType().FullName},Property:{err.PropertyName},Error:{err.ErrorMessage}"; } } }
Class:ConST.CRM.Entities.Models.T_Customer,Property:CustomerCode,Error:CustomerCode 字段是必需的。