我定义了一对多的关系。客户可以拥有多个订单,但订单只能属于一个客户。订单可以包含许多商品代码,但商品代码只能属于一个订单。订单包含必填字段:DateCreated
。带有itemcode的Item具有必填字段ItemName
。从HERE我明白了在微风中使用自定义验证器。
但是我说我创建了一个包含多个订单的客户实体。然后我添加另一个带有空DateCreated
字段的订单,从而使该实体无效。如果我尝试使用customer.entityAspect.validateEntity()
验证客户实体,是否应该能够验证订单中的每个项目并导致客户实体无效,因为它的订单没有DateCreated
?
同样,如果我在没有ItemName
的订单中添加商品,breeze是否仍会确定客户无效,因为它包含一个订单,其中一个商品缺少商品名称?也就是说,breeze会验证任何深度的嵌套关系吗?
我已经尝试了一段时间但无济于事。 EF中定义的集合不仅在我使用entity.entityAspect.validateEntity()
时验证,但在我尝试保存时验证失败。如果我尝试验证订单实体本身('order.entityAspect.validateEntity()')或项目实体本身(item.entityAspect.validateEntity()
),验证工作正常。当我尝试验证父实体时,我不会这样做:customer(customer.entityAspect.validateEntity()
)。我想知道这是正常的还是我做错了什么。是否应使用自定义验证器处理此验证?
答案 0 :(得分:0)
Breeze标准验证器仅验证一个实体。因此,当您运行customer.entityAspect.validateEntity()
时,它只在Customer上运行验证器。
客户和订单之间的业务关系以及验证客户应该要求验证订单的事实是应用程序负责的业务逻辑。您可以通过自定义验证程序或仅在应用程序的业务逻辑中实现此目的。