¿qué diferencias existen entre LINQ to SQL y Entity Framework?"
Aunque son casi lo mismo LINQ to SQL y EF han tenido vidas paralelas y, hoy en día, EF se ha impuesto de manera aplastante. La gran diferencia es que LINQ to SQL se creó con la finalidad de ser un RAD (Rapid Application Development) por lo que se dejaron alguna cosas en el tintero que
Código Civil de la República Bolivariana de Venezuela
Entity Framework ó Linq SQL - Visual Studio 2012
1. ASP.NET 4
Entity Framework ó Linq to SQL
Elaborado por : Naim Jhon Cruzado Paredes
2. ¿Cómo Crear una capa de datos?
Cual Usuarias Entity Framework ó LINQ to SQL
Una de las cosas que más interés me ha generado durante mi vida como desarrollador es como
conseguir una buena capa de persistencia, consistente, flexible y transparente para el nivel de
aplicación sin mezclar consultas sql's o crear manualmente clases que repiten funcionalidad y
datos.
He trabajado con varias herramientas, desde las más rudimentarias clases estáticas con métodos
que ejecutaban sql "a pelo" hasta clases generadas a mano que por debajo usaban una instancia
de DataRow (que por cierto no es serializable y no se puede usar con servicios WCF); hasta que en
el framework 4.0 de .NET se incluyó el Entity Framework (EF) y LINQ to Entities.
Pero antes, un poco de historia:
Ya en la versión 3.5 de .NET nuestros amigos de Redmond incluyeron una nueva herramienta de
O/RM (object relational mapping) conocida como "LINQ to SQL". Con LINQ to SQL podíamos
modelar una base de datos relacional con clases .NET de forma automática lo que nos permitía
seleccionar, editar, insertar o eliminar datos tan solo editando las clases y colecciones generadas.
Para poder trabajar con estas clases se añadió soporte para lenguaje "LINQ" (Language Integrated
Query) que no es más que un modo de expresar consultas similares al sql normal contra cualquier
colección (ya sea generado por el modelador de LINQ to SQL o bien creada manualmente). LINQ
incluye tipado, comprobación de las consultas en tiempo de compilación, expresiones lambda y
tipos anónimos e intellisense lo que lo convierte en un lenguaje para consultas mucho más
potente que el sql clásico.
Con estas dos herramientas juntas podemos obtener una serie de clases generadas
automaticamente de una base de datos y trabajar con ellas manipulando datos sin necesidad de
escribir una sola linea SQL.
Más adelante, con la versión 4.0 de .NET se incluyó ADO .NET Entity Framework y su LINQ to
Entities que ofrecía una nueva forma de modelar bases de datos en entidades de forma
automática más compleja y flexible pero con un funcionamiento básicamente similar ya que
también se trabaja mediante consultas LINQ.
Elaborado por : Naim Jhon Cruzado Paredes
3. Visto esto os preguntareis: "Pues tiene buena pinta pero...
¿qué diferencias existen entre LINQ to SQL y Entity Framework?"
Aunque son casi lo mismo LINQ to SQL y EF han tenido vidas paralelas y, hoy en día, EF se ha
impuesto de manera aplastante. La gran diferencia es que LINQ to SQL se creó con la finalidad de
ser un RAD (Rapid Application Development) por lo que se dejaron alguna cosas en el tintero que
se solventaron con EF:
LINQ to SQL sólo permite conectarse a SQL Server y ser usado en C# o VB.NET.
EF en cambio soporta varios proveedores como MySql, Oracle, SQL Server, XML, etc...
LINQ to SQL mapea cada tabla/vista como una clase o "entidad" sin permitir herencia,
entidades lógicas o entidades de negocio.
EF lo implementa completamente.
Como ves Entity Framewok está preparado para modelar la capa de datos de una forma más
generica y flexible lo que nos permite abordar proyectos de mayor envergadura aunque si lo que
buscamos es una forma rápida de modelar nuestra base de datos SQL SERVER y no necesitamos
grandes florituras LINQ to SQL nos valdría perfectamente.
En futuras entradas explicaré de forma más practica como modelar una base de datos y como
hacer las típicas consultas (Select, Insert, Update, Delete) con Entity Framework.
Elaborado por : Naim Jhon Cruzado Paredes
4. Visual Studio 2012
ASP.NET 4 “Entity Framework”
JUL 11
Continuando con los temas referentes a Entity Framework, les comento que después de algunos
meses me animo de nuevo a poner algo en este blog. Primero que nada quisiera contarles, que
todo lo que yo les he puesto anteriormente son cosas que había aprendido en el servicio y en el
IST, ahora ya estoy “trabajando” por así decirlo, y en tan poco tiempo aprendí bastantes de cosas
que me gustaría irlas viendo poco a poco, y para empezar me gustaría darles una pequeña
introducción a lo que es ADO.NET Entity Framework y Linq to Entity, utilizando los componentes
que .NET nos proporciona para así aumentar la eficiencia.
También les presumo, que ya tengo Visual Studio 2012, y trae el Framework 4.5, la verdad no
me he puesto a estudiar las novedades que trae ASP.NET 4.5, por lo tanto el post tratará sobre
el framework 4.0 y Entity Framework que es lo principal que viene en este framework.
Lo que pretendo hacer en este post es un pequeño catalogo donde se muestren diferentes tipos
de productos y se puedan filtrar, etc.
Bueno para empezar vamos a crear un proyecto ASP.NET vacio y yo lo llamaré BalusoftPost
Elaborado por : Naim Jhon Cruzado Paredes
5. OJO AMIGOS, si de casualidad tu tienes visual studio 2012, tendrás que elegir el framework 4,
esto para Post posteriores que voy a ahcer y tal vez sean de tu interes. Y finalmente pues
tendrémos un proyecto totalmente vacio… obvio
Primeramente hay que ver la base de datos que vamos a
utilizar, en este caso les voy a pasar los archivos mdf para
hacerlo mas practico, pero de igual manera si la quieren
hacer, aqui les dejo el diagrama
Elaborado por : Naim Jhon Cruzado Paredes
6. Muy simple…
Descarga la base de datos: Archivo 1 Archivo 2 , en este caso podemos desarrollado desde una
base datos que se adecue este escenario, elegir base datos a su criterio.
En visual studio creamos una carpeta especial de ASP que se llama App_Data y una vez
descargado los 2 archivos de arriba, lo arrastramos a nuestro explorador de soluciones
guardandolo en la carpeta ASP_data
Si automaticamente te agrego una conexion en visual studio, ignorala, nosotros vamos a crear
una base de datos en nuestra instancia de Sql Server express apartir de ese archivo .mdf, para
hacer eso nos posicionamos en Database Explorer:
Elaborado por : Naim Jhon Cruzado Paredes
7. Y damos clic en ¨Connect to Database¨
Escribimos el nombre de nuestro servidor, si
no les funciona .SQLEXPRESS prueben con
(local), y en Attach a database file damos la
ruta del archivo .mdf que se descargaron y
copiaron en la carpeta App_Data, damos OK.
De esta manera ya tendrémos instalada la base
de datos que vamos a utilizar
Ahora vamos a crear nuestro modelo a partir
de esa base de datos, el modelo que vamos a
crear es un modelo ADO.NET Entity
Framework, para crear un modelo apartir de la
base de datos que ya instalamos tenemos que
hacer lo siguiente:
primero creamos una nueva carpeta, que se
llamará DAL (Data Access Layer) y en esa
carpeta agregaremos un nuevo item
Elaborado por : Naim Jhon Cruzado Paredes
8. Agregamos el modelo y nos aparecerá el siguiente asistente
Next…
Elaborado por : Naim Jhon Cruzado Paredes
9. Seleccionamos la conexion que ya
creamos anteriormente y el nombre
de configuracion para Web.Config le
ponemos BalusoftEntities
Seleccionamos las tablas que queremos agregar al modelo
Elaborado por : Naim Jhon Cruzado Paredes
10. Asi ya tenemos el modelo creado, automaticamente .NET nos creo clases con sus propiedades que
evidentemente son las que tenemos en las tablas, en este caso solo productos y tipo_producto.
Ahora tenemos que construir nuestra solucion para que se compile el modelo y asi podrémos
usarlo.
Elaborado por : Naim Jhon Cruzado Paredes
11. Mostrar un menú con los tipos de productos
Primero que nada vamos a mostrar un menú que nos permitirá elegir que tipo de producto
queremos mostrar, el chiste de esto es hacer un tipo “catalogo” de productos.
Creamos un nuevo webform que se llame default.aspx y agregaremos 2 componentes de la
categoria Data: EntityDataSource y un ListView
Primero vamos a configurar el EntityDataSource, los componentes los arrastramos y en modo
diseño damos clic a la lista desplegable del componente y le damos en “Configure Data Source”
Elaborado por : Naim Jhon Cruzado Paredes
12. Y listo, en este data source vamos a tener acceso a la entidad tipo_producto y a los unicos dos
campos que contiene, ahora en el listview nos vamos al a vista de codigo y hay que dejarlo
exactamente igual:
Aquí estamos difiniendo 3 cosas, el layout de como se mostrara nuestros datos, en este caso es
una simple lista <ul>, dentro del PlaceHolder es donde se va a generar los ItemTemplate, o sea
todos los elementos que producirá la consulta a tipo_producto, mas delante definimos el
ItemTEmplate, que será un numero indefinido de elementos <li> y con la funcion Eval, obtenemos
Elaborado por : Naim Jhon Cruzado Paredes
13. el valor de los campos de la entidad, en este caso id_tipo_producto y mostramos el tipo en el
mismo enlace, si guardamos y si tenemos estos datos en la tabla tipo_productos el resultado será
el siguiente:
Datos
Resultado
y si vemos el codigo de la pagina en el cliente, vemos como nos genero los enlaces:
Lo notan?, vean el item template y vean como es el resultado, comparen
El primero es el codigo en ASP y el 2do el resultado en puro html en el cliente.
Asi es como funcionan los ListView, la verdad se pueden hacer un chorro de cosas, personalizadas
o automaticamente, de esta misma manera vamos a generar el catalogo
Elaborado por : Naim Jhon Cruzado Paredes
14. Debajo de este listview, vamos a agregar un control llamado Panel, pueden arrastrarlo y
configurar desde la interfaz las propiedades, yo por mientras solo les pondré el codigo
Es un Panel, con ID pnlCatalogo y estará oculto por el momento, el chiste es que se muestre este
panel cuando ya tenemos una categoria seleccionada del listado que ya hicimos.
Vamos a configurar el Listview igual como lo hicimos en el anterior, pero ahora vamos aplicar
estilos CSS para poder mostrarlo como un catalogo mas bonito, entonces haremos:
En nuestra pagina default.aspx vamos a agregar dentro de las etiquetas <head> el siguiente
codigo que seran estilos CSS
Ahora dentro del listView que agregamos dentro del panel que tambien agregamos (valga la
redundancia) vamos a dejarlo de la siguiente manera:
Elaborado por : Naim Jhon Cruzado Paredes
15. Y nos vamos al CodeBehind default.aspx.cs y agregamos lo siguiente
Elaborado por : Naim Jhon Cruzado Paredes
16. Basicamente, como recuerdan, al dar clic en algun tipo de producto nos manda a la misma pagina
default.aspx pero con una variable por la URL, entonces en el evento Page_Load por medio de
QueryString obtenemos el valor de esa variable que pasamos por la URL, y si es que existe algun
valor mandamos a llamar al metodo cargarCatalogo
este metodo privado llamado cargarCatalogo le damos por parametro el id del tipo de producto
que se seleccionó, creamos una instancia de nuestro modelo BalusoftEntities que creamos dentro
de la carpeta DAL, por eso agregamos el using en la parte de arriba, por medio de linq to entities
hacemos una consulta muy sencilla que es un select from where en SQL, finalmente vinculamos
los datos y el resultado será el siguiente:
Tengamos en cuenta que en la tabla productos tenemos esta informacion:
Se dan cuenta, nos muestra los productos del tipo 1, dato que se pasa por la URL y se hace todo
ese proceso.
Espero y les sirva! un saludo y esperen mas cosas de ASP.NET Entity Framework
Elaborado por : Naim Jhon Cruzado Paredes