码迷,mamicode.com
首页 > 其他好文 > 详细

一例对一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性的解决

时间:2018-05-09 19:27:56      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:ESS   必须   list   date   .data   字符   property   val   erro   

这个问题相信只要是做MVC的,都碰到过,也都知道错误的原因,就是触发了定义的实例字段校验规则。比如定义的不为空,但是为空了,或者定义的字段长度为50,但是超过50了。

 

可是有时虽然知道是这样,但是具体问题解决的时候还是无从下手。我最近就碰到一个,知道是在更新某个表的时候出现的这个问题。可是在本地无法具现此错误,这个错误是在特定条件发生的,我并不知道此特定发生条件是什么,很郁闷。

在网上找了下,知道发生这个错误会触发DbEntityValidationException异常,这个异常会有详细的异常信息说明是哪个字段,出现了什么错误,只不过需要循环输出。打算输出到日志文件中看是什么错误。代码如下:

 

[csharp] view plain copy
 
  1. try  
  2.                    {  
  3.                        es2.Update(examList);  
  4.                    }  
  5.                    catch (DbEntityValidationException dbEx)  
  6.                    {  
  7.                        foreach (var validationErrors in dbEx.EntityValidationErrors)  
  8.                        {  
  9.                            foreach (var validationError in validationErrors.ValidationErrors)  
  10.                            {  
  11.   
  12.                                EventLog.Log(string.Format("Class: {0}, Property: {1}, Error: {2}", validationErrors.Entry.Entity.GetType().FullName,  
  13.                                    validationError.PropertyName,  
  14.                                    validationError.ErrorMessage), "error");  
  15.                            }  
  16.                        }  
  17.                        throw;  
  18.                    }  
  19.                    catch (Exception ex)  
  20.                    {  
  21.                        throw;  
  22.                    }  

 

之所以用2个catch,是为了防止有其他非DbEntityValidationException 错误时,没有错误日志。

DbEntityValidationException所在命名空间:System.Data.Entity.Validation

编译,上传到服务器,过了一会,查看日志文件,找到错误原因了。

 Class: System.Data.Entity.DynamicProxies.ExamList_839A196D8FC4CF7E8A791B7F29782BA535E73532A1C3C2C00FD6EF30B6C4A660, Property: StudentAnswer, Error: 字段 StudentAnswer 必须是最大长度为 50 的字符串。
是StudentAnswer 字段长度不够了。找到答案就好办了。扩大字段大小,问题解决

一例对一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性的解决

标签:ESS   必须   list   date   .data   字符   property   val   erro   

原文地址:https://www.cnblogs.com/tsql/p/9015703.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!