0

我将如何在 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

等等

4

1 回答 1

1

所以为了澄清,我假设你的问题是你有一个 entityType 有一个集合导航属性,你想要验证它的内容。例如,您希望确保订单中所有订单详细信息的总运费低于 100 美元。

这可以通过向 entityType 添加“实体级别”验证来完成。即类似的东西

myEntityType = myEntityManager.getEntityType("Foo");
myEntityType.validators.add( myCustomValidator);

请在此处阅读微风验证文档以获取更多信息。

验证器本身应该基本上迭代从所需导航属性返回的结果,并对您在迭代过程中计算的一些聚合执行验证。

实体级别的验证,例如,将在保存过程中自动执行,但如果您希望在修改导航属性的“内容”时执行此验证,您还需要查看“relationArray.arrayChanged”事件. 微风中的每个集合导航属性都是一个“relationArray”,因此您可以在您感兴趣的每个关系数组上订阅此事件,并在您看到更改时调用父实体验证。

我们希望在某个时候向微风文档添加额外的验证示例。如果您认为这会有所帮助,请添加此项目并在微风用户语音上投票。

希望这可以帮助。

于 2013-01-17T18:19:08.337 回答