0 calificaciones0% encontró este documento útil (0 votos)
37 vistas15 páginas
ClasesMVC UAP PDF
Este documento explica cómo crear un modelo de datos de entidad en Entity Framework para representar una base de datos de películas y cómo seleccionar registros de la base de datos utilizando Entity Framework.
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0 calificaciones0% encontró este documento útil (0 votos)
37 vistas15 páginas
ClasesMVC UAP PDF
Este documento explica cómo crear un modelo de datos de entidad en Entity Framework para representar una base de datos de películas y cómo seleccionar registros de la base de datos utilizando Entity Framework.
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 15
1
Docente: Ing. Carlos Cruzado Puente de la Vega
Crear clases de modelo con Entity Framework
Aprender a usar ASP.NET MVC con Microsoft Entity Framework. Aprender a utiliar al Asistente de la entidad para crear un A!".NET Entity !ata Model. A lo lar#o de este tutorial$ construimos una aplicaci%n we& 'ue muestra c%mo seleccionar$ insertar$ actualiar y eliminar datos de la &ase de datos mediante Entity Framework.
El o&(eti)o de este tutorial es e*plicar c%mo se pueden crear clases de acceso a datos usando Microsoft Entity Framework al crear una aplicaci%n ASP.NET MVC. Este tutorial no asume conocimientos pre)ios de Microsoft Entity Framework. Al final de este tutorial$ comprender c%mo usar Entity Framework para seleccionar$ insertar$ actualiar y eliminar re#istros de la &ase de datos. Microsoft Entity Framework es una +erramienta de mapeo relacional de o&(etos ,"-.M/ 'ue permite #enerar una capa de acceso a datos de una &ase de datos automticamente. Entity Framework le permite e)itar la tediosa tarea de construir sus clases de acceso a datos a mano.
No +ay nin#una cone*i%n esencial entre ASP.NET MVC y Microsoft Entity Framework. E*isten )arias alternati)as para Entity Framework 'ue puede utiliar con ASP.NET MVC. Por e(emplo$ puede crear clases modelo MVC usando otras +erramientas "-.M como Microsoft 01N2 to S20$ N3i&ernate o su&s%nico.
Para ilustrar c%mo se puede utiliar Microsoft Entity Framework con ASP.NET MVC$ a construir una aplicaci%n de e(emplo simple. Vamos a crear una aplicaci%n de pel4cula de &ase de datos 'ue le permite mostrar y editar re#istros de &ase de datos de la pel4cula. Este tutorial asume 'ue tiene Visual Studio 5667 o Visual 8e& !e)eloper 5667 con Ser)ice Pack 9. Necesita Ser)ice Pack 9 para poder utiliar Entity Framework. Puede descar#ar Visual Studio 5667 Ser)ice Pack 9 o Visual 8e& !e)eloper con Ser)ice Pack 9 desde la si#uiente direcci%n:
+ttp:--www.ASP.net-downloads-
Crear la &ase de datos de muestra de pel4cula 0a aplicaci%n de &ase de datos de pel4cula utilia una ta&la de &ase de datos denominada pel4culas 'ue contiene las si#uientes columnas: Nombre de la columna Tipo de datos Permitir valores nulos? Es la clave principal? 1! int Falso True T4tulo n)arc+ar,966/ Falso Falso !irector n)arc+ar,966/ Falso Falso Esta ta&la puede a#re#ar a un proyecto de ASP.NET MVC si#uiendo estos pasos: 2 Docente: Ing. Carlos Cruzado Puente de la Vega
9.
3a#a clic en la carpeta App;!ata en la )entana E*plorador de soluciones y seleccione la opci%n de men< Agregar, nuevo elemento de. 5.
!esde el cuadro de dilo#o Agregar nuevo elemento $ seleccione Base de datos de SQL Server$ dar la &ase de datos el nom&re Mo)ies!=.mdf y +a#a clic en el &ot%n Agregar . >.
3a#a do&le clic en el arc+i)o Mo)ies!=.mdf para a&rir la )entana de E*plorador E*plorer-&ase de datos del ser)idor. ?.
E*panda la cone*i%n de &ase de datos de Mo)ies!=.mdf$ +a#a clic en la carpeta ta&las y seleccione la opci%n Agregar nueva tabla. @.
En el diseAador de ta&las$ a#re#ar las columnas 1d$ t4tulo y !irector. B.
3a#a clic en el &ot%n uardar ,tiene el icono del dis'uete/ para #uardar la nue)a ta&la con las pel4culas de nom&re. !espuCs de crear la ta&la de &ase de datos de pel4culas$ de&e a#re#ar al#unos datos de muestra en la ta&la. 3a#a clic en la ta&la pel4culas y seleccione la opci%n de men< !ostrar tabla de datos. Puede introducir datos falsos de la pel4cula en la cuadr4cula 'ue aparece.
Crear el A!".NET Entity !ata Model Para poder usar Entity Framework$ de&e crear un modelo de datos de la entidad. Puede apro)ec+ar del Asistente de Entity Data Model de Visual Studio para #enerar un modelo de datos de entidad de una &ase de datos automticamente. Si#a estos pasos: 9.
3a#a clic en la carpeta de modelos en la )entana E*plorador de soluciones y seleccione la opci%n de men< Agregar, nuevo elemento. 5.
En el cuadro de dilo#o Agregar nuevo elemento $ seleccione la cate#or4a de datos ,)er fi#ura 9/. >.
Seleccione la plantilla de A"#.NET Entit$ "ata !odel $ el modelo de datos de la entidad de dar el nom&re Mo)ies!=Model.edm* y +a#a clic en el &ot%n Agregar . Al +acer clic en el &ot%n Agregar $ se inicia al Asistente de modelo de datos. ?.
En el paso de Elegir modelo de contenido $ seleccione la opci%n generar desde una base de datos y +a#a clic en el siguiente &ot%n ,)er fi#ura 5/. @.
En el paso de Elegir la cone%i&n de datos $ seleccione la cone*i%n de &ase de datos de Mo)ies!=.mdf$ escri&a el nom&re de confi#uraci%n de cone*i%n de entidades Mo)ies!=Entities y +a#a clic en el siguiente &ot%n ,)er fi#ura >/. B.
En el Eli'a los ob'etos de base de datos paso$ seleccione la ta&la de &ase de datos de la pel4cula y +a#a clic en el acabado de &ot%n ,)er fi#ura ?/. !espuCs de completar estos pasos$ a&re el A!".NET Entity !ata Model !esi#ner ,Entity !esi#ner/.
(igura ) * creando un nuevo modelo de datos de entidad 3 Docente: Ing. Carlos Cruzado Puente de la Vega
(igura + * Eli'a paso de contenido del modelo
(igura , * Eli'a su cone%i&n de datos 4 Docente: Ing. Carlos Cruzado Puente de la Vega
(igura - * Eli'a los ob'etos de base de datos
Modificar el A!".NET Entity !ata Model !espuCs de crear un modelo de datos de la entidad$ puede modificar el modelo$ apro)ec+ando el diseAador de la entidad ,)er fi#ura @/. Puede a&rir el diseAador de la entidad en cual'uier momento +aciendo do&le clic en el arc+i)o Mo)ies!=Model.edm* en la carpeta de modelos dentro de la )entana E*plorador de soluciones. (igura . * el A"#.NET Entit$ "ata !odel "esigner 5 Docente: Ing. Carlos Cruzado Puente de la Vega
Por e(emplo$ puede utiliar el diseAador de la entidad para cam&iar los nom&res de las clases 'ue #enera el Asistente de datos del modelo de entidad. El asistente crea una nue)a clase de acceso de datos denominada pel4culas. En otras pala&ras$ el asistente le dio a la clase el mismo nom&re 'ue la ta&la de &ase de datos. Por'ue )amos a utiliar esta clase para representar una instancia particular de la pel4cula$ nosotros de&emos cam&iar la clase de pel4culas para cine. Si desea cam&iar el nom&re de una clase de entidad$ puede +acer do&le clic en el nom&re de clase en el diseAador de la entidad y escri&a un nue)o nom&re ,)er fi#ura B/. Alternati)amente$ puede cam&iar el nom&re de una entidad en la )entana de propiedades despuCs de seleccionar una entidad en el diseAador de la entidad. (igura / * cambiar un nombre de entidad 6 Docente: Ing. Carlos Cruzado Puente de la Vega
.ecuerde #uardar el modelo de datos de la entidad despuCs de +acer una modificaci%n$ +a#a clic en el &ot%n Duardar ,el icono del dis'uete/. !etrs de las escenas$ el diseAador de la entidad #enera un con(unto de clases de Visual =asic. net. Puede )er estas clases a&riendo el arc+i)o Mo)ies!=Model.!esi#ner.)& desde la )entana del e*plorador de soluciones. No modifi'ue el c%di#o en el arc+i)o !esi#ner.)& ya se so&rescri&ir los cam&ios la pr%*ima )e 'ue utilice el diseAador de la entidad. Si desea ampliar la funcionalidad de las clases de entidad definida en el arc+i)o !esi#ner.)& puede crear clases parciales en arc+i)os separados. Seleccionar re#istros de &ase de datos con Entity Framework Vamos a empear a construir nuestra aplicaci%n de pel4cula de &ase de datos mediante la creaci%n de una p#ina 'ue muestra una lista de re#istros de la pel4cula. El controlador de la casa de 0istado 9 e*pone una acci%n denominada 1nde*,/. 0a acci%n de 1nde*,/ de)uel)e todos los re#istros de la pel4cula de la ta&la de &ase de datos de la pel4cula$ apro)ec+ando el marco de la entidad.
Listado ) * 0ontrollers12ome0ontroller.vb <HandleError()> _ Public Class HomeController Inherits System.Web.Mc.Controller 7 Docente: Ing. Carlos Cruzado Puente de la Vega
Priate _db !s Moies"#Entities
Public Sub $e%() _db & $e% Moies"#Entities() End Sub
Public 'unction Inde(() )ie%"ata.Model & _db.MoieSet.*o+ist() ,eturn )ie%() End 'unction
End Class "&ser)e 'ue el controlador en el listado 9 incluye un constructor. El constructor inicialia un campo de ni)el de clase denominado ;d&. El campo de ;d& representa a las entidades de &ase de datos #eneradas por Microsoft Entity Framework. El campo ;d& es una instancia de la clase de Mo)ies!=Entities 'ue fue #enerada por el diseAador de la entidad. El campo ;d& se utilia dentro de la acci%n de 1nde*,/ para recuperar los re#istros de la ta&la de &ase de datos de pel4culas. 0a ;d& de e*presi%n.Mo)ieSet representa todos los re#istros de la ta&la de &ase de datos de pel4culas. El mCtodo To0ist,/ se utilia para con)ertir el con(unto de pel4culas en una colecci%n #enCrica de o&(etos de la pel4cula: lista ,de pel4cula/. 0os re#istros de la pel4cula se recuperan con la ayuda de 01N2 to Entities. 0a acci%n 1nde*,/ en 0istado 9 utilia 01N2 Sintaxis de mtodo para recuperar el con(unto de re#istros de &ase de datos. Si lo prefiere$ puede utiliar la sintaxis de consulta 01N2 en su lu#ar. 0os si#uientes dos comandos +acen lo mismo: )ie%"ata.Model & _db.MoieSet.*o+ist() )ie%"ata.Model & (-rom m in _db.MoieSet select m).*o+ist() Etilice cual'uier sinta*is 01N2 F sinta*is de mCtodo o consulta F 'ue encuentres ms intuiti)a. No e*iste diferencia en rendimiento entre los dos enfo'ues: la <nica diferencia es el estilo. 0a )ista en el listado 5 se utilia para mostrar los re#istros de la pel4cula. Listado de + * 3ie4s12ome15nde%.asp% <./ Pa0e +an0ua0e&1)#1 Inherits&1System.Web.Mc.)ie%Pa0e(2- +ist(2- Mc!33lication4.Moie))1 .> <5"2C*6PE html P7#+IC 1899W:C99"*" ;H*M+ 4.< *ransitional99E$1 1htt3=99%%%.%:.or09*,9(html49"*"9(html48transitional.dtd1> <html (mlns&1htt3=99%%%.%:.or094>>>9(html1 > <head runat&1serer1> <title>Inde(<9title> 8 Docente: Ing. Carlos Cruzado Puente de la Vega
<9di> <9body> <9html> 0a )ista en el listado 5 contiene un &ucle (or Eac6 'ue recorre en cada re#istro de la pel4cula y muestra los )alores de propiedades de t4tulo y !irector del re#istro de la pel4cula. "&ser)e 'ue se muestra un )4nculo Editar y eliminar al lado de cada re#istro. Adems$ un )4nculo A#re#ar pel4cula aparece en la parte inferior de la )ista ,)er fi#ura G/.
(igura 7 * la vista de 8ndice 9 Docente: Ing. Carlos Cruzado Puente de la Vega
El 4ndice es un escrito de la vista. 0a )ista de 4ndice tiene una directi)a H I J Pa#e I K 'ue incluye un atri&uto 1n+erits. El atri&uto 1n+erits proyecta la propiedad View!ata.Model a una infle*i&le lista colecci%n #enCrica de o&(etos de la pel4cula: una lista ,de pel4cula/. 1nsertar re#istros de &ase de datos con Entity Framework Puede utiliar el marco de la entidad para 'ue sea fcil de insertar nue)os re#istros en una ta&la de &ase de datos. 0istado > contiene dos nue)as acciones a#re#adas a la clase de controlador de inicio 'ue puede utiliar para insertar nue)os re#istros en la ta&la de &ase de datos de la pel4cula. Listado ,9 0ontrollers12ome0ontroller.vb :agregar m;todos< <HandleError()> _ Public Class HomeController Inherits System.Web.Mc.Controller
Public 'unction !dd() ,eturn )ie%() End 'unction
<!cce3t)erbs(Htt3)erbs.Post)> _ Public 'unction !dd(#y)al -orm !s 'ormCollection) 10 Docente: Ing. Carlos Cruzado Puente de la Vega
C )alidate I- Strin0.Is$ull2rEm3ty(moie*o!dd.*itle) *hen ModelState.!ddModelError(1*itle1@ 1*itle is reEuired51) End I- I- Strin0.Is$ull2rEm3ty(moie*o!dd."irector) *hen ModelState.!ddModelError(1"irector1@ 1"irector is reEuired51) End I-
C I- alid@ sae moie to database I- (ModelState.Is)alid) *hen _db.!dd*oMoieSet(moie*o!dd) _db.SaeChan0es() ,eturn ,edirect*o!ction(1Inde(1) End I-
C 2ther%ise@ resho% -orm ,eturn )ie%(moie*o!dd) End 'unction
End Class 0a primera acci%n Add,/ simplemente de)uel)e una )ista. 0a )ista contiene un formulario para a#re#ar una nue)a &ase de datos de pel4cula #ra&ar ,)er fi#ura 7/. Cuando usted en)4a el formulario$ se in)oca la se#unda acci%n Add,/. "&ser)e 'ue la se#unda acci%n Add,/ est decorada con el atri&uto AcceptVer&s. Esta acci%n puede ser in)ocada s%lo cuando realice una operaci%n P"ST de 3TTP. En otras pala&ras$ esta acci%n s%lo se puede in)ocar al re#istrar un formulario 3TM0. 0a se#unda acci%n Add,/ crea una nue)a instancia de la clase de pel4cula de marco de entidad con la ayuda del mCtodo ASP.NET MVC TryEpdateModel,/. El mCtodo TryEpdateModel,/ toma los campos en el FormCollection pasada al mCtodo Add,/ y asi#na los )alores de estos campos de formulario 3TM0 a la clase de pel4cula. 11 Docente: Ing. Carlos Cruzado Puente de la Vega
Al usar Entity Framework$ de&e proporcionar una Llista &lancaL de propiedades cuando utilice los mCtodos TryEpdateModel o EpdateModel para actualiar las propiedades de una clase de entidad. A continuaci%n$ la acci%n de Add,/ realia al#unos )alidaci%n de forma simple. 0a acci%n se )erifica 'ue el t4tulo y el !irector de propiedades tienen )alores. Si +ay un error de )alidaci%n$ un mensa(e de error de )alidaci%n se a#re#a a ModelState. Si no +ay errores de )alidaci%n se a#re#a un nue)o re#istro de pel4cula a la ta&la de &ase de datos de pel4culas con la ayuda de Entity Framework. El nue)o re#istro se a#re#a a la &ase de datos con las dos si#uientes l4neas de c%di#o: _db.!dd*oMoieSet(moie*o!dd) _db.SaeChan0es() 0a primera l4nea de c%di#o a#re#a la nue)a entidad de pel4cula al con(unto de pel4culas 'ue realia un se#uimiento Entity Framework. 0a se#unda l4nea de c%di#o #uarda los cam&ios realiados en las pel4culas 'ue se est realiando un se#uimiento a la &ase de datos su&yacente. (igura = * la vista Add
Actualiaci%n de re#istros de &ase de datos con Entity Framework Puede se#uir casi el mismo enfo'ue para editar un re#istro de &ase de datos con Entity Framework como el enfo'ue 'ue +emos se#uido s%lo para insertar un nue)o re#istro de &ase de datos. 0istado ? contiene 12 Docente: Ing. Carlos Cruzado Puente de la Vega
dos nue)as acciones de control con el nom&re Edit,/. 0a primera acci%n de Edit,/ de)uel)e un formulario 3TM0 para editar un re#istro de la pel4cula. 0a se#unda acci%n Edit,/ intenta actualiar la &ase de datos. Listado de - * 0ontrollers12ome0ontroller.vb :m;todos de edici&n< <HandleError()> _ Public Class HomeController Inherits System.Web.Mc.Controller
Public 'unction Edit(#y)al id !s Inte0er) C Fet moie to u3date "im moie*o73date !s Moie & _db.MoieSet.'irst('unction(m) m.Id & id) )ie%"ata.Model & moie*o73date ,eturn )ie%() End 'unction
<!cce3t)erbs(Htt3)erbs.Post)> _ Public 'unction Edit(#y)al -orm !s 'ormCollection)
C Fet moie to u3date "im id !s Inte0er & Inte0er.Parse(-orm(1id1)) "im moie*o73date !s Moie & _db.MoieSet.'irst('unction(m) m.Id & id)
C )alidate I- Strin0.Is$ull2rEm3ty(moie*o73date.*itle) *hen ModelState.!ddModelError(1*itle1@ 1*itle is reEuired51) End I- I- Strin0.Is$ull2rEm3ty(moie*o73date."irector) *hen ModelState.!ddModelError(1"irector1@ 1"irector is reEuired51) End I-
C I- alid@ sae moie to database I- (ModelState.Is)alid) *hen _db.SaeChan0es() ,eturn ,edirect*o!ction(1Inde(1) 13 Docente: Ing. Carlos Cruzado Puente de la Vega
End I-
C 2ther%ise@ resho% -orm ,eturn )ie%(moie*o73date) End 'unction
End Class 0a se#unda acci%n de Edit,/ empiea por recuperar el re#istro de la pel4cula de la &ase de datos 'ue coincide con el 1d de la pel4cula 'ue se est editando. El si#uiente 01N2 to declaraci%n de entidades a#arra el primer re#istro de la &ase de datos 'ue coincida con un particular 1d: "im moie*o73date !s Moie & _db.MoieSet.'irst('unction(m) m.Id & id) A continuaci%n$ el mCtodo TryEpdateModel,/ se utilia para asi#nar los )alores de los campos del formulario 3TM0 a las propiedades de la entidad de la pel4cula. "&ser)e 'ue se suministra una lista &lanca para especificar las propiedades e*actas para actualiar. A continuaci%n$ al#unos )alidaci%n simple se realia para compro&ar 'ue el t4tulo de la pel4cula y el !irector de propiedades tienen )alores. Si cual'uier propiedad carece de un )alor$ entonces se a#re#a un mensa(e de error de )alidaci%n a ModelState y ModelState.1sValid de)uel)e el )alor false. Por <ltimo$ si no +ay errores de )alidaci%n$ entonces la ta&la de &ase de datos de pel4culas se actualia con los cam&ios llamando al mCtodo Sa)eC+an#es,/. Al editar los re#istros de la &ase de datos$ necesita pasar el 1d del re#istro 'ue se est editando a la acci%n del controlador 'ue realia la actualiaci%n de la &ase de datos. !e lo contrario$ la acci%n del controlador no sa&r 'ue re#istre para actualiar la &ase de datos su&yacente. 0a )ista Editar$ fi#uran en el listado @$ incluye un campo de formulario oculto 'ue representa el 1d del re#istro de &ase de datos 'ue se est editando. Listado de . * 3ie4s12ome1Edit.asp% <./ Pa0e +an0ua0e&1)#1 Inherits&1System.Web.Mc.)ie%Pa0e(2- Mc!33lication4.Moie)1 .> <5"2C*6PE html P7#+IC 1899W:C99"*" ;H*M+ 4.< *ransitional99E$1 1htt3=99%%%.%:.or09*,9(html49"*"9(html48transitional.dtd1> <html (mlns&1htt3=99%%%.%:.or094>>>9(html1 > <head id&1Head41 runat&1serer1> <title>Edit<9title> <style ty3e&1te(t9css1>
.in3ut8alidation8error A 14 Docente: Ing. Carlos Cruzado Puente de la Vega
bac?0round8color=6ello%G B
<9style> <9head> <body> <di>
<h4>Edit Moie<9h4>
<-orm method&13ost1 action&19Home9Edit1>
<588 Include Hidden Id 88> <.& Html.Hidden(1id1) .>
<9di> <9body> <9html> Eliminar re#istros de la &ase de datos con Entity Framework 0a operaci%n de &ase de datos final$ 'ue tenemos 'ue a&ordar en este tutorial$ es eliminar re#istros de la &ase de datos. Puede utiliar la acci%n del controlador en el listado B para eliminar un re#istro de &ase de datos determinada. Listado de />>10ontrollers12ome0ontroller.vb :acci&n de eliminaci&n< <HandleError()> _ 15 Docente: Ing. Carlos Cruzado Puente de la Vega
Public Class HomeController Inherits System.Web.Mc.Controller
Public 'unction "elete(#y)al id !s Inte0er) C Fet moie to delete "im moie*o"elete !s Moie & _db.MoieSet.'irst('unction(m) m.Id & id)
C "elete _db."elete2bHect(moie*o"elete) _db.SaeChan0es()
C Sho% Inde( ie% ,eturn ,edirect*o!ction(1Inde(1) End 'unction
End Class En primer lu#ar$ la acci%n de !elete,/ recupera la pel4cula entidad 'ue coincide con el 1d pasa a la acci%n. A continuaci%n$ la pel4cula se elimina de la &ase de datos llamando al mCtodo !elete"&(ect,/ se#uido por el mCtodo Sa)eC+an#es,/. Por <ltimo$ se rediri#e al usuario a la )ista de 4ndice.
.esumen El prop%sito de este tutorial era demostrar c%mo crear aplicaciones de &ases de datos we& apro)ec+ando las )enta(as de ASP.NET MVC y Microsoft Entity Framework. Aprendi% a construir una aplicaci%n 'ue permite seleccionar$ insertar$ actualiar y eliminar re#istros de la &ase de datos. En primer lu#ar$ +a&lamos de c%mo puede utiliar al Asistente de modelo de datos de entidad para #enerar un modelo de datos de la entidad desde dentro de Visual Studio. Finalmente$ utiliamos el Entity Framework para insertar$ actualiar y eliminar re#istros de la &ase de datos.