2015-10-02 54 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上的验证器。

客户和订单之间的业务关系以及验证客户应验证订单的事实是业务逻辑,这是应用程序的责任。您可以通过自定义验证器来实现这一点,或者只是在应用程序的业务逻辑中实现。