-Escrito por Víctor Paredes.
Hace poco tiempo tuve que desarrollar un proyecto muy pequeño, era tan solo un par de ABMs y dos listados que mostraban la información ordenada de una forma particular. Para realizar el trabajo utilicé ASP.NET MVC 3 y Linq2Sql. Ambas herramientas eran mas que suficientes para cumplir con los requisitos que solicitados y funcionan en casi cualquier VPS ( Virtual Private Server ).
A medida que el proyecto avanzó, me di cuenta que la entidad que generaba Linq2Sql era la misma que iba a necesitar para mostrar la información al usuario. Entonces, tuve tres opciones:
- Utilizar la entidad generada y perder todas las ventajas de los DataAnnotations que me ofrecía ASP.NET MVC. No parecía tan mal pero escribir todas las validaciones a mano era algo que no tenia pensado hacer.
- Escribir una entidad nueva. Agregarle los DataAnnotations que necesitaba y crear un mapper para ir/venir entre la entidad web y la entidad de Linq. Esto básicamente significaba poner una pistola en la cabeza del principio DRY y acabar con su miserable y patética vida.
- Buscar en Google una tercer mejor opción.
Decidí buscar en el gran amigo de los desarrolladores, Google, y encontré un concepto llamado "Buddy Class". Dicho concepto tiene por finalidad permitir extender la metadata de las clases parciales. Es decir, sirve para extender las entidades generadas por Linq2Sql y agregar los DataAnnotations sin sumar complejidad. El ejemplo en sí es bastante simple y prácticamente se explica por si solo en la siguiente imagen:
Cuidado. Este concepto se mueve por una zona de grises ya que estamos creando clases que repiten propiedades de otras clases. Sólo es aconsejable utilizarlo cuando no se tenga control de la clase original, por ejemplo, entidades generadas de manera automática por Linq2Sql u objetos Proxy serializables que también se generan automáticamente al agregar una referencia a un web services o servicio WCF.
0 comentarios:
Publicar un comentario
Muchas gracias por leer el post y comentarlo.