对一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性
问题原因:触发了定义的实例字段校验规则。比如不为空字段为空了,或者字段超长,我的问题是不为空的字段为空导致的。
解决方案
第一种: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 字段是必需的。
无穷的伟大,也是从“0”开始的