0

据我所知,Entity Framework 中的验证完全建立在这样一个假设之上:如果一个项目未能通过验证,它就不能被持久化到数据库中。是否有任何机制(可能与正常验证并行运行)对字段进行约束向用户发出警告,而不是阻止记录被保存/更新的错误?

更具体地说,我有一个特定的数值字段对其有限制的情况,但这些都是建议性的,而不是硬性的。如果用户输入了超出这些限制的值,他们应该会收到警告,但仍然应该能够保存记录。

理论上,我可以继承 ValidationResult 类来创建一个 ValidationWarning 类,然后创建一个自定义的 ValidationResults 子类,其 IsValid 属性对 ValidationWarning 消息的存在敏感,并在确定实体是否有效时忽略它们。然而,这个需求已经出现在一个已经在开发中的项目中,并且需要大量的重构才能使这种自定义子类正常工作。我更愿意找到一种可以在不造成太多干扰/返工的情况下加以利用的机制。

4

1 回答 1

0

I had a similar requirement on a project and how I solved it was this. If (ModelState.IsValid) is false, I cleared out the errors out of the ModelState and sent it on its way again,then logged the "error" to another service. This is a bit of a hack and I would'nt recommend doing as it is not exactly best practice.

于 2013-06-29T18:36:12.497 回答