A medida que estoy aprendiendo más y más sobre ASP.NET MVC, más me introduzco a las anotaciones de datos.
Específicamente en MVC se usan para la validación y esto me preocupa.
Lo más grande se debe al hecho de que me gusta mantener mi modelo como POCO y lo más limpio posible.
¿Qué sucede si tengo esas clases de modelo compartidas en varios proyectos en una solución (es decir, interfaz web, aplicación de escritorio, servicios web)?
Básicamente me preocupa que las anotaciones específicas para mi aplicación MVC puedan influir en otros proyectos como Dynamic Data, etc. Ya tengo mis Business Objects separados de mi modelo de base de datos (en este caso LINQ2SQL), así que no me preocupo sobre anotaciones que tienen influencia en mi DAL, pero me pregunto si mi miedo sobre otros proyectos es legítimo.¿Las anotaciones de datos realmente son una buena idea para la validación?
También creo que atar un mensaje de error requerido a su modelo es un poco loco.
Supongo que el problema se resolvería si creara modelos separados para cada proyecto (web, escritorio, servicio web, etc.) pero esto sería prácticamente una copia directa de mi modelo actualmente compartido. ¿Es el camino correcto?
Tendría un gran impacto en mi solución (mucho mapeo de un modelo a otro sucediendo).
¿Qué opinas?
Me gustaría escuchar lo que considera un uso bueno y malo de las anotaciones de datos.
Sé que esto es una respuesta de 5 años, pero puede usted por favor me punto en la dirección correcta? Lo que dices tiene mucho sentido, no puedes hacer todo con anotaciones de datos. – dpp
@dpp - sí, ha pasado un tiempo desde que construí una gran validación, y en esos años las anotaciones de datos mejoraron un poco y otras herramientas también mejoraron un poco. De todos modos, la forma en que lo abordamos fue construir una tubería de validación de dos fases. Primero fue un método basado en DataAnnotations para verificar las cosas que podría hacer en memoria en un solo objeto. La segunda fase fue una solución de dependencia inyectada que podría conectar la validación con la base de datos para buscar cosas como la singularidad y otros requisitos que requerían consultas. Hoy probablemente solo usaría FluentValidation como pegamento aquí. –