Entity Framework 4.1

download Entity Framework 4.1

of 12

Transcript of Entity Framework 4.1

  • 7/30/2019 Entity Framework 4.1

    1/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 decdigo, en otras palabras crearemos cdigo a partir de las clases que tenemos, con esto no sernecesario 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.1para poder trabajar el ejemplo que haremos; se puede descargar deAqu.Esto me permitir poder utilizar el espacio de nombre System.Data.Entity.DbContext, lo primeroque haremos despus de haber actualizado nuestro Framework 4.1 ser crear un proyecto para elcaso 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 lepondremos EntityFrameworkFirst, solo crearemos tres clases con las que jugaremos en nuestrasolucin.Las tres clase quedaran as:

    http://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.com.sv&sl=en&tl=es&u=http://www.microsoft.com/en-us/download/details.aspx%3Fid%3D26825&usg=ALkJrhi13UfmZ8HkJQnac8ttUDg7BzshTAhttp://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.com.sv&sl=en&tl=es&u=http://www.microsoft.com/en-us/download/details.aspx%3Fid%3D26825&usg=ALkJrhi13UfmZ8HkJQnac8ttUDg7BzshTAhttp://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.com.sv&sl=en&tl=es&u=http://www.microsoft.com/en-us/download/details.aspx%3Fid%3D26825&usg=ALkJrhi13UfmZ8HkJQnac8ttUDg7BzshTAhttp://codigofuentenet.files.wordpress.com/2012/09/snap1.jpghttp://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.com.sv&sl=en&tl=es&u=http://www.microsoft.com/en-us/download/details.aspx%3Fid%3D26825&usg=ALkJrhi13UfmZ8HkJQnac8ttUDg7BzshTA
  • 7/30/2019 Entity Framework 4.1

    2/12

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

    http://codigofuentenet.files.wordpress.com/2012/09/snap3.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap2.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap3.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap2.jpg
  • 7/30/2019 Entity Framework 4.1

    3/12

    Recuerden que si no he actualizado el Framework 4.1 no me saldr la primera, hoy solo quedaprogramar cada una de mis clase de esta forma:

    La primera ser Clientes aunque el orden no afectara el resultado

    http://codigofuentenet.files.wordpress.com/2012/09/snap45.jpg
  • 7/30/2019 Entity Framework 4.1

    4/12

    La segunda ser la de factura y quedara as:

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

    http://codigofuentenet.files.wordpress.com/2012/09/snap6.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap5.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap6.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap5.jpg
  • 7/30/2019 Entity Framework 4.1

    5/12

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

    http://codigofuentenet.files.wordpress.com/2012/09/snap71.jpg
  • 7/30/2019 Entity Framework 4.1

    6/12

    Aqu en este momento si lo corremos nos dara un erro por el string de conexin para que no nos deese 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 estnresaltadas. La primera parte tendr que tener el nombre de la clase que hereda del DbContext, lasegunda parte es el servidor o instancia del SQLServer el punto hace referencia al usuario local ypor 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:

    http://codigofuentenet.files.wordpress.com/2012/09/snap121.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap13.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap121.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap13.jpg
  • 7/30/2019 Entity Framework 4.1

    7/12

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

    y si vemos nos agrego el registro que le pedimos.

    El diseo de las tablas quedaran as:

    Factura.

    http://codigofuentenet.files.wordpress.com/2012/09/snap16.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap15.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap141.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap16.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap15.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap141.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap16.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap15.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap141.jpg
  • 7/30/2019 Entity Framework 4.1

    8/12

    Cliente.

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

    http://codigofuentenet.files.wordpress.com/2012/09/snap18.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap17.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap18.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap17.jpg
  • 7/30/2019 Entity Framework 4.1

    9/12

    http://codigofuentenet.files.wordpress.com/2012/09/snap19.jpg
  • 7/30/2019 Entity Framework 4.1

    10/12

    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 quetendrn y podemos mandar un mensaje de error si no se cumple. Y ya por ultimo colocaremos otroatributo de tipo fecha pero imaginemos que no quiero que aparezca en la tabla que creare entoncesutilizamos 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 baseque creamos anteriormente.

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

    http://codigofuentenet.files.wordpress.com/2012/09/snap211.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap20.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap211.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap20.jpg
  • 7/30/2019 Entity Framework 4.1

    11/12

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

    Y no la tomo en cuenta en nuestra tabla. Esta no es la nica forma de especificar esto tambin sepuede hacer usando o remplazando el mtodo OnModelCreating, el cual le pasa a una claseDbModelBuilder dentro del mtodo OnModelCreating le especificamos lo mismo que con las

    banderas (Anotaciones).Primero dejaramos la clase que acabamos de modificar as:

    http://codigofuentenet.files.wordpress.com/2012/09/snap241.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap23.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap22.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap241.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap23.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap22.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap241.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap23.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap22.jpg
  • 7/30/2019 Entity Framework 4.1

    12/12

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

    Como hicimos anteshay que borrar la base que creamos anteriormente; si corremosnuestra aplicacin nuestra tabla nos quedara as:

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

    http://codigofuentenet.files.wordpress.com/2012/09/snap291.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap271.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap291.jpghttp://codigofuentenet.files.wordpress.com/2012/09/snap271.jpg