实体框架在SaveChanges之前检查DbUpdateException

时间:2018-06-13 10:28:18

标签: entity-framework savechanges

如果您尝试将长度为500的字符串保存到Sql Server中一个nvarchar(255)的列中,您将获得server: port: 8084

在致电DbUpdateException之前,有没有办法检查此错误?也许在将实体添加到上下文中时?

1 个答案:

答案 0 :(得分:2)

  

在调用SaveChanges之前有没有办法检查此错误?也许在将实体添加到上下文中时?

是。可以通过在DbContext上调用此方法GetValidationErrors(),如下所示,但只有在实体类中使用data annoations attributes时才会得到验证错误结果

var validationResults = dbContext.GetValidationErrors();

validationResults将包含DbEntityValidationResult的集合,因此如果为空,则您的跟踪实体有效。然后紧接着调用SaveChanges将不会抛出有关数据验证的异常,但您仍然可以获得其他一些例外情况,这些异常只能在服务器端进行检查,例如:并发异常,唯一或引用约束异常等。