如何为我的POCO(模板)类添加验证

nac*_*10f 13 asp.net validation asp.net-mvc poco entity-framework-4

所以我用这个教程来生成我将在我的应用程序中使用的poco类.问题是我不应该修改生成的cs文件导致它们被自动生成...我如何添加像[Required]这样的属性类似的东西??请帮忙

Lad*_*nka 23

您不能直接添加它(除非您修改T4模板为您创建它们),但您可以尝试使用ASP.NET动态数据中引入的技巧.所有POCO类都定义为部分类.所以我们来定义你的部分内容:

using System.ComponentModel.DataAnnotations;

[MetadataType(typeof(MyClassMetadata))]
public partial class MyClass
{
  private class MyClassMetadata
  {
     [Required]
     public object Id;

     [Required]
     [StringLength(100)]
     public object Name;
  }
}
Run Code Online (Sandbox Code Playgroud)

元数据类是仅保存元数据的特殊类型 - 从不使用它.字段名称必须与实际类中的相应字段相同(字段类型无关紧要,因此您可以使用object).

无论如何,在ASP.NET MVC中,您应该为每个视图使用专门的View模型并传递您需要的数据,以便将验证属性放置在视图模型类中.

  • @jfar:好的.你读过最后一段了吗?:)我总是试图回答这个问题,并提供最佳实践,如果我不同意解决方案. (4认同)
  • 如果你是downvote那么让我知道为什么会很高兴?如果我的答案不正确,我会修改或删除它... (3认同)
  • @jfar:你也应该去看看MS,因为EF Code First在POCO实体上引入了DataAnnotations作为常见场景:http://blogs.msdn.com/b/adonet/archive/2010/12/15/ef-feature- ctp5-validation.aspx开玩笑吧.我理解您的担忧. (2认同)
  • @jfar,你为何如此讨厌那些DataAnnotation属性?当然,在Entity类中没有它们的位置,但它们与ViewModel一起工作得很好. (2认同)