EF 4 + CTP 5 = Code First : Database II

 

En el post anterior de la serie empezamos a tratar el tema del manejo de las base de datos con EF 4 + CTP 5 y Code First. En el, vimos como se gestionan los nombres de las bases de datos a utilizar/crear y que mecanismos tenemos para modificarlos. En esta ocasión, hablaremos de los mecanismos de cambio del provedor e instancia por defecto a utilizar.

Si partimos del mismo ejemplo que la entrada anterior, a continuación, tal y como comentamos el sistema por defecto intentará utilizar/crear una base de datos en la instancia por defecto .SQLEXPRESS

Cambiar esta convención, al igual que para el caso anterior con el nombre, también es muy sencillo. De hecho, podríamos utilizar la técnica del archivo de configuración igual que hicimos anteriormente con el nombre. Por ejemplo, si quisieramos apuntar a nuestra instancia (local) simplemente tendríamos que agregar la siguiente entrada en el archivo de configuración.

Otra alternativa, es utilizar la extensibilidad que nos da EF 4 + CTP5, sobre la cual hablaremos a continuación. La clase DbDatabase, definida dentro del espacio de nombres System.Data.Entity.Database, nuevo espacio de nombres incluído con la CTP 5, pone a nuestra disposición una propiedad estática que nos permite especificar la factoria de creación de las conexiones, DbConnection, a utilizar por la infraestructura, en esta propiedad, como se puede ver a continuación, podremos recuperar o asignar el IDbConnectionFactory concreto que deseamos utilizar.

Por defecto, en esta CTP, solamente tenemos dos IDbConnectionFactory a utilizar, SqlConnectionFactory y SqlCeConnectionFactory. Como se imaginará, el primero está indicado para trabajar con Sql Server y el segundo contra Sql Server Compact Edition. Por supuesto, nadie nos prohibe crear nuestra propia factoria y por lo tanto, especificar en ella cuales son las convenciones que deseamos utilizar por defecto.

Crear una nueva factoria es relamente sencilla, nuestro contrato solamente nos obliga a implementar un sencillo método, como vemos en el siguiente fragmento.

El método CreateConnection nos proporciona el nombre o cadena de conexión asignado a la base de datos, que como usted sabe ya ha podido indicarse desde la cadena de conexión o bien haciendo uso de unos de los constructores de DbContext, esto lo hemos visto en el post anterior.

 

Si revisaramos el código de SqlConnectionFactory podríamos observar como en su constructor por defecto se establece una cadena de conexión base, sin especificar el catálogo, y que la misma, es, como ya sabemos, apuntando a la instancia de SqlExpress. Nosotros, podríamos hacer lo mismo con la nuestra contra una instancia por defecto distinta o bien con alguna configuración particular.

Bueno, hasta aquí llegamos con la segunda entrada. La siguiente, también la dedicaremos a este mismo tema, la creación y uso de las bases de datos en EF 4 + CTP 5 + Code First. En este caso, el tema tratará de inicializadores, migración de modelos etc.

 

Saludos

Unai

Un comentario sobre “EF 4 + CTP 5 = Code First : Database II”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *