Está en la página 1de 12

Entity Framework 4.1(System.Data.Entity.

DbContext)
En este post tocaremos la utilizacin del Framework 4.1 para creacin de bases de datos a partir de cdigo, en otras palabras crearemos cdigo a partir de las clases que tenemos, con esto no ser necesario el modelar las entidades en el Entity Data Model. Lo primero que tenemos que hacer es descargar una actualizacin, en este caso la del Framework 4.1 para poder trabajar el ejemplo que haremos; se puede descargar de Aqu. Esto me permitir poder utilizar el espacio de nombre System.Data.Entity.DbContext, lo primero que haremos despus de haber actualizado nuestro Framework 4.1 ser crear un proyecto para el caso trabajaremos en uno de tipo consola.

Aunque yo utilizare el 2012 funciona correctamente para el 2010 y siempre lo creare con el Framework 4 as que no hay diferencia entre uno y otro. Ya creado nuestro proyecto al cual le pondremos EntityFrameworkFirst, solo crearemos tres clases con las que jugaremos en nuestra solucin. Las tres clase quedaran as:

Ahora tendremos que colocar algunas referencias hacia nuestro proyecto que sern estas:

Recuerden que si no he actualizado el Framework 4.1 no me saldr la primera, hoy solo queda programar cada una de mis clase de esta forma: La primera ser Clientes aunque el orden no afectara el resultado

La segunda ser la de factura y quedara as:

Para poder utilizar el Framework tenemos que tener una clase que derive de System.Data.Entity.DbContext, que me permitir tener toda la funcionalidad del DataEntity. Esta clase ser en este ejemplo el Contexto:

Tenemos que hacer referencia al espacio de nombres de System.Data.Entity y como se puede ver hereda de la clase DbContext al hacer esto la clase se comportar igual que el ObjectContext, ya con esto solo queda programar en le Program y en el app.config tenemos que agregar el string de la conexin de la base de datos; el program queda as:

Aqu en este momento si lo corremos nos dara un erro por el string de conexin para que no nos de ese error hay que agregar un archivo de configuracin para arreglar ese problema:

Como podemos ver en este string de conexin se divide en tres partes importantes que estn resaltadas. La primera parte tendr que tener el nombre de la clase que hereda del DbContext, la segunda parte es el servidor o instancia del SQLServer el punto hace referencia al usuario local y por ultimo el nombre de la base de datos que en nuestro caso seria le nombre de nuestra aplicacin (EntityFrameworkFirst). Si corremos este proyecto nos creara nuestra base de datos:

Si vemos dentro del SQLServer en contrariamos la base que hemos creado junto con las tablas que en nuestra aplicacin son las clases.

y si vemos nos agrego el registro que le pedimos.

El diseo de las tablas quedaran as:

Factura.

Cliente.

ahora bien como se puede apreciar los string me los deja como nvarchar(MAX), en algn momento tendremos que decirle por cdigo el tamao o el numero de caracteres que queremos para cada atributo para ello usaremos otra referencia que nos servir para ello que es el System.ComponentModel.DataAnnotations. Y la clase nos quedara as:

Con estas banderas (Anotaciones) lograremos hacer lo siguiente en el id le diremos que es una llave; el nombre, Apellido, y direccin son requeridos y le establecemos el mximo de caracteres que tendrn y podemos mandar un mensaje de error si no se cumple. Y ya por ultimo colocaremos otro atributo de tipo fecha pero imaginemos que no quiero que aparezca en la tabla que creare entonces utilizamos el NoMapped para que no lo tome en cuenta. Si corremos esta aplicacin nos creara la base de datos, Pero antes hay que borrar la base

que creamos anteriormente.

Si revisamos la tabla de cliente nos quedara de la siguiente forma:

Y como podemos ver si cumpli lo que le pedimos con las banderas (Anotaciones). y la lnea que especificamos as:

Y no la tomo en cuenta en nuestra tabla. Esta no es la nica forma de especificar esto tambin se puede hacer usando o remplazando el mtodo OnModelCreating, el cual le pasa a una clase DbModelBuilder dentro del mtodo OnModelCreating le especificamos lo mismo que con las banderas (Anotaciones). Primero dejaramos la clase que acabamos de modificar as:

Siempre dejaramos el atributo de tipo fecha que le agregamos. Para esto tendramos que programar esto en la Clase Contexto.

Como hicimos antes hay que borrar la base que creamos anteriormente; si corremos nuestra aplicacin nuestra tabla nos quedara as:

Como podemos ver de las dos formas podemos especificar el valor de los atributos y cuales si se tomaran en cuenta para la creacin de las tablas y cuales no.

También podría gustarte