我如何在Breeze中实现收集级别验证。
说我有3行的集合。我想确保%Used列的总和为100。
行数可以变化(动态),它可以是1-10行之间的任何行。 每个父行可以具有不同的子行集合
a) Parent Row1
ID %used
1 20
2 40
3 40
========
100
b) Parent Row 2
ID %used
1) 50
2) 50
========
100
等等
答案 0 :(得分:1)
所以,为了澄清,我假设你的问题是你有一个entityType,它有一个集合导航属性,你要验证的内容。例如,您可能希望确保订单中所有订单详细信息的总运费成本低于100美元。
这可以通过向entityType添加“实体级别”验证来完成。即
之类的东西myEntityType = myEntityManager.getEntityType("Foo");
myEntityType.validators.add( myCustomValidator);
有关详细信息,请阅读breeze验证文档here。
验证器本身应基本上迭代从所需导航属性返回的结果,并对在迭代过程中计算的某些聚合执行其验证。
实体级别验证(例如此操作)将在保存过程中自动执行,但如果您希望在导航属性的“内容”被修改时执行此验证,您还需要查看'relationArray。 arrayChanged'事件。 breeze中的每个集合导航属性都是'relationArray',因此您可以在您感兴趣的每个关系数组上订阅此事件,并在看到更改时调用父实体验证。
我们希望在某些时候在breeze文档中添加其他验证示例。如果您觉得这样做有帮助,请添加此项并在微风User Voice上投票。
希望这会有所帮助。