Cuando se crea el EDM, se crea al mismo tiempo un archivo por medio de la herramienta llamada: EntityModelCodeGenerator, mismo que es agregado a nuestro proyecto. El nombre de este archivo emplea un estándar muy simple, se trata de la combinación del nombre que le hayas agregado a tu EDM, al cual se le añade la palabra designer.
Debido a que este código es generado, no es recomendable hacer modificaciones a este archivo, ya que si necesitamos volver a generar el EDM, por algún cambio en la Base de datos, entonces estos cambios se perderían.
Si revisamos en el Explorador de soluciones, podemos encontrar este archivo, por debajo del EDM; si lo abrimos para edición (recuerden que los cambios aquí no sor perdurables) podemos ver que se encuentra organizado en regiones, si expandimos las regiones encontraremos el código de las clases que se genero con la herramienta.
Hay dos regiones dentro del namespace, en la primera se encuentra el Contexto y en la segunda las entidades.
Al abrir la región del contexto podemos observar que se trata de una clase parcial, que hereda del ObjectContext, y que a su vez tiene 4 regiones para organizar su código: Constructor, Métodos Parciales, propiedades del objetcSet y los métodos para agregar entidades.
Si expandimos la región del constructor podemos ver que hay 3 constructores, los cuales representan las 3 sobre cargas que soporta:
La primera sin parámetros establece el nombre de la cadena de conexión que por default se empleara.
El segundo recibe una cadena de texto que servirá como cadena de conexión
El último recibe un objeto EntityConnection.
Si queremos controlar la cadena de conexión, solo debemos proporcionársela al momento de crear la instancia, usando cualquiera de estos métodos que ya comentamos previamente.
Si estas usando el Patrón de Repositorio, del que comento en este post , entonces al momento de inicializar la instancia del repositorio, debes proporcionarle la referencia del EDM que empleara, es en ese momento que podrías acceder a los constructores sobrecargados:
Concentrémonos en las sobre cargas que reciben parámetros. La que recibe la cadena de conexión, puede verse poco elegante si la escribimos directamente ahí; y la que recibe un EntityConnection se vería muy laboriosa en cada lugar donde debamos pasársela al constructor.
Una solución reutilizable sería crear un Helper para que se encargue de crear la cadena de conexión del Entity y se la envié al constructor; y si nos permite cambiar el servidor y la base de datos entonces sería más interesante.
La clase Helper sería así: Ahora podemos pasarle la instancia del EDM a nuestro repositorio teniendo el control de la cadena de conexión, al momento de crear la instancia:
El poder del código solo es completo, si tenemos el conocimiento de como usarlo.
No hay comentarios:
Publicar un comentario