我已经覆盖了我的
但是,当
为什么会这样?我该如何识别无效的列? 重写方法
然而,对于
ApplicationDbContext.SaveChanges()
方法。这有助于我在黄色和白色的应用程序错误屏幕上提供立即可见的错误消息。但是,当
DateTime
列存在验证错误时,catch子句似乎没有被激活。为什么会这样?我该如何识别无效的列? 重写方法
public partial class ApplicationDbContext
{
public override int SaveChanges()
{
try
{
return base.SaveChanges(); //**error is thrown here**//
}
catch (DbEntityValidationException ex)
{
var sb = new StringBuilder();
foreach (var failure in ex.EntityValidationErrors)
{
sb.AppendFormat("{0} failed validation\n", failure.Entry.Entity.GetType());
foreach (var error in failure.ValidationErrors)
{
sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
sb.AppendLine();
}
}
throw new DbEntityValidationException(
"Entity Validation Failed - errors follow:\n" +
sb.ToString(), ex
);
}
}
}
然而,对于
DateTime
列,异常没有被抛出,似乎捕获块未被触发。
![输入图像描述](https://istack.dev59.com/WQfOr.webp)
DbEntityValidationException
而不是抛出SqlException
。解决方案几乎肯定是这些原因之一:https://dev59.com/YnM_5IYBdhLWcg3wjj0p - StuartLC