数据注释真的是验证的好主意吗?

Pio*_*iak 11 validation asp.net-mvc data-annotations

随着我对ASP.NET MVC的了解越来越多,我对数据注释的介绍越来越多.
特别是在MVC中,它们用于验证,这给了我一些关注.
最大的原因是我喜欢将我的模型保持为POCO并尽可能保持干净.
现在如果我在解决方案中的多个项目中共享这些模型类(即Web前端,桌面应用程序,Web服务),该怎么办?
基本上我担心特定于我的MVC前端应用程序的注释会影响其他项目,如动态数据等.我已经将我的Business Objects与我的数据库模型(在本例中为LINQ2SQL)分开,所以我不担心注释有影响我的DAL,但我想知道我对其他项目的恐惧是否合法.

另外我认为将所需的错误消息绑定到您的模型有点疯狂.

我想如果我为每个项目(Web,桌面,Web服务等)创建单独的模型,问题就会解决,但这实际上是我当前共享模型的直接副本.这是正确的道路吗?
这将对我的解决方案产生重大影响(从一个模型到另一个模型的映射很多).

你怎么看?
我想听听你认为数据注释的好坏使用.

Tod*_*ith 6

我发现数据注释对于规则永远不会改变的模型很方便,这取决于诸如电子邮件地址之类的上下文.

但是对于更复杂的验证(多个字段,需要数据库访问等),我使用实体验证中描述的访问者模式与访问者和扩展方法.


Wya*_*ett 3

真的,真的很好的问题。特别是因为所有闪亮的演示示例应用程序都是围绕处理所有验证的 DataAnnotations 构建的,因为它是一个如此漂亮、闪亮的卖点。无论如何,谁喜欢进行验证呢?

我认为更好的看待这个问题的方法是,它们应该成为更全面的验证解决方案的一部分,无论是出于您提到的结构原因还是它们的局限性——您如何验证诸如“此用户名是否唯一?”之类的内容。或“该经理是否可以将此任务分配给该员工?” 使用数据注释?