我在实体框架6.0中使用淘汰验证2.0.3并获得意外的验证错误。这是我的工作流程:
步骤1 :(按预期工作)使用添加对话框创建新实体并尝试保存新实体。显示验证错误,因为缺少某些属性。这是想要的行为。用户取消对话框,我调用 unitofwork.rollback()来撤消新实体的创建。
步骤2:打开相同类型的现有实体的编辑对话框。尽量保存它。 => 再次显示步骤1中的验证错误!
如何在步骤1之后清除验证错误?
如果我只执行step2,保存操作就可以了。
在相关的stackoverflow问题中建议使用
errors.showAllMessages(false);
这没有解决我的问题。
相关问题:
答案 0 :(得分:0)
对于我使用的验证
validation.group(checkedEntity, { deep: true });
完整对象树还会考虑已检查实体的 entityAspect 。 entityAspect连接到实体管理器。该实体管理器包含实体的旧状态。
完整周期是:
fooInstance => entityAspect => entityManager => entityGroupMap => Foo:... => _entities => 旧实体实例
因此我基本上有两种选择:
entityManager.rejectChanges();
<强> entityManager.clear(); 强>