Cuando nos encontramos con alguna innovación en la tecnología, siempre debemos analizar de qué forma afectara nuestra forma de hacer las cosas. Por ejemplo hace algunos pocos años, los celulares y las redes sociales no formaban parte de nuestras vidas. Hoy en día un adolecente, se preguntara como podíamos vivir sin estos.
Aun recuerdo cuando un generador de código era una herramienta mística, que cualquiera deseaba como parte de sus herramientas de trabajo. Hoy en día, el Visual Studio nos ofrece este tipo de herramientas, que sonde gran utilidad.
Por ejemplo dentro del Entity Framework (EF), se genera código cada vez que actualizamos el Model. Además de ser de gran ayuda, nos presenta un nuevo reto: Si quisiera a nivel de clases modificar el código de las entidades, para agregarle alguna propiedad que solo me sirve a nivel de la aplicación, estas modificaciones se perderían si tenemos que actualizar el Model.
Los patrones al rescate.
Nuevamente se recurre a un patrón probado: Buddy Class (o clase Amiga). Esta clase nos permite agregarle a la entidad atributos, en un archivo externo al código generado con la herramienta, par que no se pierda cuando se regenere este al actualizar el Model.
Hay algunos puntos que nos permiten lograrlo, como el hecho que las clases que se generan son de tipo PARTIAL; este tipo de clases nos permite distribuir el código que forma parte de una clase en diferentes archivos físicos.
Como se implementa?
Lo primero es crear una clase que se llame igual que alguna entidad dentro del EF, luego le agregamos la palabra PARTIAL: Como pueden ver, también es posible agregar más propiedades a la clase, que no se deben almacenar en la base de datos.
Luego agregamos un atributo, que le indica al compilador que a esta clase (la parcial o extendida de la entidad) tiene una clase amiga, en la cual podemos definir los atributos que no podemos añadir en el código de la entidad, ya que se perdería si se actualizara el model.
Ok, todo se ve muy simple y fácil de implementar. Sin embargo, como dije en un post anterior, desde un tiempo atrás he estado aplicando a mi flujo de trabajo, principios de codificación, patrones y buenas prácticas y esta clase me hace detenerme en de golpe.
Acaso, no es una abierta y clara violación al principio DRY? Desde luego que si lo es, estamos repitiendo cada propiedad que queremos controlar. Sin embargo esta es la forma que se recomienda emplear. Así que no culpen al mensajero!.
No hay comentarios:
Publicar un comentario