2013-01-17 55 views
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 

和不同的收集等

回答

1

所以只是爲了澄清,我假設您的問題是,你必須有一個集合導航屬性的的EntityType時,您想要驗證的內容。一個例子可能是您要確保訂單中所有訂單詳細信息的總運費低於100美元。

這可以通過向entityType添加'實體級別'驗證來完成。即像

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

請閱讀微風驗證文件here以獲取更多信息。

驗證器本身應該基本上迭代從所需的導航屬性返回的結果,並對迭代過程中計算的某些聚合執行驗證。

實體級別驗證(如此)將在保存過程中自動執行,但是如果您希望在導航屬性的「內容」被修改時執行此驗證,您還需要查看'relationArray .arrayChanged'事件。 breeze中的每個集合導航屬性都是'relationArray',因此您可以在您感興趣的每個關係數組上訂閱此事件,並在您看到更改時調用父實體驗證。

我們希望在某些時候爲微風文檔添加額外的驗證示例。請添加此項目並在微風User Voice上投票,如果你覺得這會有所幫助。

希望這會有所幫助。

+0

Naunihal,這是否足以回答您的問題?如果是這樣,請接受它,以便我們可以關閉票。感謝您與我們保持聯繫。 – Ward