我开始了一个项目,看看EF 4可以用POCO做什么。我创建了一个db和一个自定义POCO。现在我想验证我的数据。为此,我正在使用企业库验证块5。
我没有问题,包括通过属性验证我的POCO并将其与Entity Framework一起使用,但这意味着我的POCO将不再是POCO,因为我将依赖项插入到Validation框架中。
我应该在哪里建议插入验证部分并保持POCO清洁?
答案 0 :(得分:2)
我个人认为,作为实体的一部分,验证没有太大的问题 - 毕竟,实体是你的域模型的一部分,可以想到验证规则,可以说是,作为其属性的一部分。我不是域建模专家:)
最后,验证需要与实体进行一定程度的耦合。如果你决定减少耦合,我认为最终会有尴尬的代码。对于我的最新项目,我确实将验证分成了不同的类,这些类被放置在实体的部分类中,到目前为止我对结果非常满意。
答案 1 :(得分:0)
我同意您希望您的实体免于验证。它不是域对象本身的责任(SRP)。
除了基于属性的验证之外,企业库验证应用程序块(VAB)还支持基于配置的验证。您可以在此处遵循两种模式:
使用基于XML的配置。这得到了很好的支持。 VAB包含一个配置工具,允许您配置整个事物而无需编写单行XML。特别是5.0工具非常好。尽管如此,使用XML会很难重构模型中的任何内容(但是,单元测试可以帮助您更快地发现错误)。
使用基于代码的配置。虽然我个人喜欢这个模型,因为它可以更好地使您的域易于重构。你可以让它工作,但它还不是很好的支持。您可以查看this thread以查看如何基于代码进行配置以及当前短缺的示例。
答案 2 :(得分:0)
我会创建一个服务类并在该类中进行验证。
例如,您有一个名为Listing的POCO类。创建一个名为ListingService的服务类。然后在名为ValidateListing的方法中进行ListingService中的验证。