4

我开始了一个项目,看看 EF 4 可以用 POCO 做什么。我创建了一个数据库和一个自定义 POCO。现在我想验证我的数据。为此,我正在使用 Enterprise Library Validation Block 5。

我没有问题,包括通过属性在我的 POCO 中进行验证并将其与实体框架一起使用,但这意味着我的 POCO 将不再是 POCO,因为我将依赖项插入到验证框架中。

有什么建议我应该在哪里插入验证部分并保持 POCO 清洁?

4

3 回答 3

2

就我个人而言,我认为将验证作为实体的一部分并没有太大的问题——毕竟,实体域模型的一部分,并且可以将验证规则视为其属性的一部分。虽然我不是领域建模专家:)

最后,验证需要在某种程度上与实体耦合。如果您决定减少耦合,我认为最终可能会出现笨拙的代码。对于我的最新项目,我确实将验证拆分为不同的类,这些类被放置在实体的部分类中,到目前为止我对结果非常满意。

于 2010-09-06T07:29:41.937 回答
0

我同意您希望您的实体免于验证。这不是域对象本身的责任(SRP)。

除了基于属性的验证,企业库验证应用程序块 (VAB) 还支持基于配置的验证。您可以在此处遵循两种模型:

  1. 使用基于 XML 的配置。这得到了很好的支持。VAB 包含一个配置工具,它允许您配置整个事物而无需编写单行 XML。尤其是5.0的工具非常好。尽管如此,使用 XML 还是很难重构模型中的任何内容(但是,单元测试将帮助您更快地发现错误)。

  2. 使用基于代码的配置。虽然我个人喜欢这个模型,因为它可以更好地使您的域易于重构。你可以让它工作,但它还没有得到很好的支持。您可以查看此线程以查看如何编写基于代码的配置的示例以及当前的不足之处。

祝你好运。

于 2010-09-06T09:14:36.633 回答
0

我将创建一个服务类并在该类中进行验证。

例如,您有一个名为 Listing 的 POCO 类。创建一个名为 ListingService 的服务类。然后在ListingService 中的ValidateListing 方法中进行验证。

于 2010-11-14T15:26:40.410 回答