如何回滚淘汰验证错误?

时间:2016-07-13 08:07:54

标签: entity-framework validation knockout.js rollback knockout-validation

我在实体框架6.0中使用淘汰验证2.0.3并获得意外的验证错误。这是我的工作流程:

步骤1 :(按预期工作)使用添加对话框创建新实体并尝试保存新实体。显示验证错误,因为缺少某些属性。这是想要的行为。用户取消对话框,我调用 unitofwork.rollback()来撤消新实体的创建。

步骤2:打开相同类型的现有实体的编辑对话框。尽量保存它。 => 再次显示步骤1中的验证错误!

如何在步骤1之后清除验证错误?

如果我只执行step2,保存操作就可以了。

在相关的stackoverflow问题中建议使用

errors.showAllMessages(false);

这没有解决我的问题。

相关问题:

1 个答案:

答案 0 :(得分:0)

对于我使用的验证

validation.group(checkedEntity, { deep: true });

完整对象树还会考虑已检查实体的 entityAspect 。 entityAspect连接到实体管理器。该实体管理器包含实体的旧状态。

完整周期是:

fooInstance => entityAspect => entityManager => entityGroupMap => Foo:... => _entities => 旧实体实例

因此我基本上有两种选择:

  • 请勿使用{deep:true}
  • 确保在回滚后,实体管理器不再包含旧实体:
  

entityManager.rejectChanges();

     

<强> entityManager.clear();