Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 在使用EF和POCO时,我应该在何处/何时验证我的数据?_.net_Entity Framework_Validation_Poco_Validation Application Bl - Fatal编程技术网

.net 在使用EF和POCO时,我应该在何处/何时验证我的数据?

.net 在使用EF和POCO时,我应该在何处/何时验证我的数据?,.net,entity-framework,validation,poco,validation-application-bl,.net,Entity Framework,Validation,Poco,Validation Application Bl,我开始了一个项目,看看EF4可以用POCO做什么。我创建了一个db和一个自定义POCO。现在我想验证我的数据。为此,我使用企业库验证块5 我可以通过属性将验证包含在我的POCOs中,并将其与实体框架一起使用,但这意味着我的POCOs将不再是POCOs,因为我将依赖项插入了验证框架 我应该在哪里插入验证部分并保持POCO清洁,有什么建议吗 就我个人而言,我认为验证作为实体的一部分不会有太大问题——毕竟,实体是域模型的一部分,可以说,验证规则是其属性的一部分。但我不是领域建模专家:) 最后,验证需要

我开始了一个项目,看看EF4可以用POCO做什么。我创建了一个db和一个自定义POCO。现在我想验证我的数据。为此,我使用企业库验证块5

我可以通过属性将验证包含在我的POCOs中,并将其与实体框架一起使用,但这意味着我的POCOs将不再是POCOs,因为我将依赖项插入了验证框架


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

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


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

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

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

  • 使用基于XML的配置。这是得到充分支持的。VAB包含一个配置工具,允许您在不编写一行XML的情况下配置整个内容。尤其是5.0工具非常好。尽管如此,使用XML还是很难重构模型中的任何内容(不过,单元测试将帮助您更快地发现错误)

  • 使用基于代码的配置。我个人喜欢这个模型,因为它可以更好地使您的域易于重构。您可以让它工作,但它还没有得到很好的支持。您可以查看一个示例,了解如何编写基于代码的配置以及当前的缺点


  • 祝你好运。

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


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

    下面是使用验证应用程序块执行基于流畅代码的配置的示例:。