2012-03-26 60 views
0

我的领域模型对象(由实体框架生成)对其进行验证(使用属性和IValidatableObject接口),通过评论人们似乎反对将验证属性置于领域模型中好友类)。.NET领域模型验证和好友类

我使用专门的ViewModel类和它自己的验证属性来处理UI(ASP.NET MVC)中的客户端验证,因为我的业务层暴露给其他客户端UI,所以我仍然需要域模型的验证属性这是一个好方法吗?

+0

似乎违反了DRY,因为您在两个不同的地方创建验证以满足框架需求。 – 2012-03-26 08:06:20

+0

谢谢,那么最好的方法是什么?请注意,我需要验证域模型,因为我有其他客户端使用业务层。 – Socardo 2012-03-26 09:37:33

回答

0

是的,没有。它是一个很好的方法,因为你在服务器端进行验证。您的域逻辑不应该假设客户端验证(客户端当然应验证)。但除此之外,我不会按属性验证域,因为验证规则是特定于上下文的;他们依赖于你正在执行的操作。我将验证放在表示域的不同用例(写操作)的方法中,例如“创建客户”,“账单客户”,“取消订单”等。不要假定所有验证规则都是不变量。

我不明白如何在不将您的域实体暴露在服务边界之外的情况下重用服务器和客户端验证,这种情况更糟糕。