2015-10-02 85 views
0

我定義了一個一對多的關係。一個客戶可以有很多訂單,但一個訂單隻能屬於一個客戶。訂單可以有多個商品代碼,但商品代碼只能屬於一個訂單。訂單有一個必填字段:DateCreated。並且包含商品代碼的商品有必填字段,ItemName。從HERE我明白在微風中使用自定義驗證器。微風驗證一對多關係

但說我創建具有多個訂單的客戶實體。然後我添加一個空的DateCreated字段的另一個訂單,從而使這個實體無效。如果我嘗試驗證使用customer.entityAspect.validateEntity()客戶實體,應該清風能夠驗證每個項目的訂單,導致該客戶實體是無效的,因爲它沒有DateCreated訂單?

同樣,如果我將項目添加到沒有ItemName的訂單中,是否仍然會判斷客戶無效,因爲它包含一個項目缺少項目名稱的訂單?也就是說,微風會驗證任何嵌套關係的深度?

我一直在嘗試了一會兒,但無濟於事。在EF定義的集合不只是驗證,當我用entity.entityAspect.validateEntity(),但是當我嘗試保存驗證失敗。如果我嘗試驗證訂單實體本身('order.entityAspect.validateEntity()')或項目實體本身(item.entityAspect.validateEntity()),驗證工作正常。我只是沒有當我嘗試驗證父實體:客戶(customer.entityAspect.validateEntity())。我想知道這是否正常或我做錯了什麼。這個驗證應該使用自定義驗證器來處理嗎?

回答

0

Breeze標準驗證器只驗證一個實體。所以當你運行customer.entityAspect.validateEntity()時,它只運行Customer上的驗證器。

客戶和訂單之間的業務關係以及驗證客戶應驗證訂單的事實是業務邏輯,這是應用程序的責任。您可以通過自定義驗證器來實現這一點,或者只是在應用程序的業務邏輯中實現。