S11 - Entity Framework - SQL Server
S11 - Entity Framework - SQL Server
Herramientas de Programación 1
SQL SERVER ENTITY FRAMEWORK
Semana 11
MARCO TEÓRICO
BASE DE DATOS DE EJEMPLO
Nuestra Base de Datos de ejemplo implementa la funcionalidad de venta de pasajes aéreos.
El nombre de la BD es: BD_LATAM.
Trabajaremos con esta BD durante las semanas 11, 12 y 13.
Diagrama de la BD_LATAM:
Antes de definir Entity Framework revisaremos sus orígenes, esto es, entender el concepto ORM (Mapeo de Objetos
Relacionales).
ORM
Cuando se tiene una aplicación compleja se necesita de una BD, esta permitirá organizar los datos en tablas relacionadas
entre sí con campos ya predefinidos en cada una de ellas. Los gestores que manejas este tipo de base de datos pueden ser
SQL Server, Oracle entre otros.
Guía de Laboratorio
Herramientas de Programación 1 – Entity framework – SQL Server
……….2
______________________________________________________________________
______________________
Guía de Laboratorio
Herramientas de Programación 1 – Entity framework – SQL Server
……….3
______________________________________________________________________
______________________
El Modelo son un conjunto de Clases que nos trae la estructura relacional de cata tabla perteneciente a la BD, por ejemplo,
una determinada Clase representa una tabla en específico donde los campos de esta pasan a ser las propiedades de la Clase.
El Modelo se encargara de generar todo el script SQL necesario para comunicarse con la BD simplificando las tareas
básicas de acceso de datos para el programador.
El Modelo se encargará de generar todo el script SQL necesario para comunicarse con la BD simplificando las tareas
básicas de acceso de datos para el programador.
El resto de la aplicación nunca tendrá acceso a la BD si no es a través del Modelo, en otras palabras, si la aplicación quiere
acceder y operar sobre la BD (consultar, crear, modificar y eliminar datos) lo hará a través del Modelo. Y esta es la ventaja
debido a que el Modelo estará escrito en el mismo lenguaje de programación que toda la aplicación (en nuestro caso C#).
ENTITY FRAMEWORK
Entendido todo lo anterior Entity Framework es un ORM que nos permite generar el Modelo, ventajas:
Facilidad y velocidad de uso.
Absorción de las BD usadas.
Seguridad de la capa a acceso a datos contra ataques.
Desventajas:
En entornos con gran carga de información, por agregar una capa más en el proceso, puede mermar en el rendimiento.
RECURSOS
a. Hardware
Una computadora con 4 GB e RAM y procesador de 2.0 GHz.
b. Software
Visual Studio Professional 2015 / 2017
SQL Server 2014 / 2017
En los ejemplos se utilizó la versión Express 2014, puede usar las versiones comerciales o la Developer.
SQL Server Management Studio (SSMS)
Es la herramienta cliente más usada para gestionar las BD de SQL Server.
Guía de Laboratorio
Herramientas de Programación 1 – Entity framework – SQL Server
……….4
______________________________________________________________________
______________________
PROCEDIMIENTO
Laboratorio 11:
Objetivos
Crear Base de Datos de ejemplo en SQL Server.
Hacer consultas básicas DML.
Introducción:
Durante esta actividad, vamos a dar una rápida revisión a SQL Server, esto es:
o Crear la BD de ejemplo: BD_LATAM.
o Comprender la estructura y relaciones entre las tablas de la BD_LATAM.
o Revisar los procedimientos almacenados de la BD_LATAM.
Desde Visual Studio aprenderemos a crear una conexión a la BD_LATAM.
a. Abrimos SSMS.
b. Hacemos click derecho en la carpeta “Databases” y seleccionamos la opción “New Database…”
Guía de Laboratorio
Herramientas de Programación 1 – Entity framework – SQL Server
……….5
______________________________________________________________________
______________________
c. En la pantalla saliente ingresamos el nombre “BD_LATAM” y presionamos en el botón “OK”.
d. Validamos que se ha creado la BD_LATAM. Es una BD sin tablas, para crear las tablas vamos ejecutar un script
sql, para ello primero presionamos la opción “New Query”
Guía de Laboratorio
Herramientas de Programación 1 – Entity framework – SQL Server
……….6
______________________________________________________________________
______________________
h. Hasta este instante hemos creado las tablas y sus relaciones, sin embargo no almacena ninguna información, la
ejecución del siguiente script (DML) nos facilitara la carga inicial de datos:
USE [BD_LATAM]
GO
SET IDENTITY_INSERT [dbo].[Avion] ON
GO
INSERT [dbo].[Avion] ([Id], [Modelo], [Matricula], [Activo]) VALUES (1, N'AIRBUS A300', NULL, 0)
GO
INSERT [dbo].[Avion] ([Id], [Modelo], [Matricula], [Activo]) VALUES (2, N'BOEING 737', NULL, 1)
GO
INSERT [dbo].[Avion] ([Id], [Modelo], [Matricula], [Activo]) VALUES (3, N'AIRBUS A340', NULL, 1)
GO
INSERT [dbo].[Avion] ([Id], [Modelo], [Matricula], [Activo]) VALUES (4, N'AIRBUS A350', NULL, 1)
GO
INSERT [dbo].[Avion] ([Id], [Modelo], [Matricula], [Activo]) VALUES (5, N'BOEING 747', NULL, 1)
GO
SET IDENTITY_INSERT [dbo].[Avion] OFF
GO
SET IDENTITY_INSERT [dbo].[AsientoAvion] ON
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (1, 1, N'A1', 1)
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (2, 1, N'A2', 1)
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (3, 1, N'A3', 1)
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (4, 2, N'B1', 1)
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (5, 2, N'B2', 1)
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (6, 2, N'B3', 1)
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (7, 3, N'C1', 1)
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (8, 3, N'C2', 1)
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (9, 3, N'C3', 1)
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (10, 4, N'D1', 1)
Guía de Laboratorio
Herramientas de Programación 1 – Entity framework – SQL Server
……….12
______________________________________________________________________
______________________
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (11, 4, N'D2', 1)
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (12, 4, N'D3', 1)
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (13, 5, N'E1', 1)
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (14, 5, N'E2', 1)
GO
INSERT [dbo].[AsientoAvion] ([Id], [IdAvion], [Nombre], [Activo]) VALUES (15, 5, N'E3', 1)
GO
SET IDENTITY_INSERT [dbo].[AsientoAvion] OFF
GO
SET IDENTITY_INSERT [dbo].[Pasajero] ON
GO
INSERT [dbo].[Pasajero] ([Id], [Nombres], [ApellidoPaterno], [ApellidoMaterno], [Dni], [Activo]) VALUES (1, N'JUAN',
N'PEREZ', N'PINO', N'01020304', 1)
GO
INSERT [dbo].[Pasajero] ([Id], [Nombres], [ApellidoPaterno], [ApellidoMaterno], [Dni], [Activo]) VALUES (2,
N'ISABEL', N'RODRIGUEZ', N'LOZANO', N'16164789', 1)
GO
INSERT [dbo].[Pasajero] ([Id], [Nombres], [ApellidoPaterno], [ApellidoMaterno], [Dni], [Activo]) VALUES (3,
N'LUCY', N'MATIAS', N'POVIS', N'88750102', 1)
GO
INSERT [dbo].[Pasajero] ([Id], [Nombres], [ApellidoPaterno], [ApellidoMaterno], [Dni], [Activo]) VALUES (4,
N'PEDRO', N'VARGAS', N'JARAMILLO', N'56551487', 1)
GO
SET IDENTITY_INSERT [dbo].[Pasajero] OFF
GO
SET IDENTITY_INSERT [dbo].[Ciudad] ON
GO
INSERT [dbo].[Ciudad] ([Id], [Nombre], [Activo]) VALUES (1, N'LIMA', 1)
GO
INSERT [dbo].[Ciudad] ([Id], [Nombre], [Activo]) VALUES (2, N'CUZCO', 1)
GO
INSERT [dbo].[Ciudad] ([Id], [Nombre], [Activo]) VALUES (3, N'TRUJILLO', 1)
GO
INSERT [dbo].[Ciudad] ([Id], [Nombre], [Activo]) VALUES (4, N'IQUITOS', 1)
GO
INSERT [dbo].[Ciudad] ([Id], [Nombre], [Activo]) VALUES (5, N'AREQUIPA', 1)
GO
INSERT [dbo].[Ciudad] ([Id], [Nombre], [Activo]) VALUES (6, N'TACNA', 0)
GO
SET IDENTITY_INSERT [dbo].[Ciudad] OFF
GO
SET IDENTITY_INSERT [dbo].[TipoServicio] ON
GO
INSERT [dbo].[TipoServicio] ([Id], [Nombre], [Activo]) VALUES (1, N'VIP', 1)
GO
INSERT [dbo].[TipoServicio] ([Id], [Nombre], [Activo]) VALUES (2, N'ECONOMICO', 1)
GO
INSERT [dbo].[TipoServicio] ([Id], [Nombre], [Activo]) VALUES (3, N'TURISTA', 1)
GO
INSERT [dbo].[TipoServicio] ([Id], [Nombre], [Activo]) VALUES (4, N'INVITADO', 0)
GO
SET IDENTITY_INSERT [dbo].[TipoServicio] OFF
GO
Guía de Laboratorio
Herramientas de Programación 1 – Entity framework – SQL Server
……….13
______________________________________________________________________
______________________
SET IDENTITY_INSERT [dbo].[Tarifa] ON
GO
INSERT [dbo].[Tarifa] ([Id], [IdCiudadOrigen], [IdCiudadDestino], [IdTipoServicio], [Precio], [Activo]) VALUES (1, 1,
2, 1, CAST(300.00 AS Decimal(10, 2)), 1)
GO
INSERT [dbo].[Tarifa] ([Id], [IdCiudadOrigen], [IdCiudadDestino], [IdTipoServicio], [Precio], [Activo]) VALUES (2, 1,
2, 2, CAST(200.00 AS Decimal(10, 2)), 1)
GO
INSERT [dbo].[Tarifa] ([Id], [IdCiudadOrigen], [IdCiudadDestino], [IdTipoServicio], [Precio], [Activo]) VALUES (3, 1,
2, 3, CAST(250.00 AS Decimal(10, 2)), 1)
GO
INSERT [dbo].[Tarifa] ([Id], [IdCiudadOrigen], [IdCiudadDestino], [IdTipoServicio], [Precio], [Activo]) VALUES (4, 2,
1, 1, CAST(305.00 AS Decimal(10, 2)), 1)
GO
INSERT [dbo].[Tarifa] ([Id], [IdCiudadOrigen], [IdCiudadDestino], [IdTipoServicio], [Precio], [Activo]) VALUES (5, 2,
1, 2, CAST(205.00 AS Decimal(10, 2)), 1)
GO
INSERT [dbo].[Tarifa] ([Id], [IdCiudadOrigen], [IdCiudadDestino], [IdTipoServicio], [Precio], [Activo]) VALUES (6, 2,
1, 3, CAST(255.00 AS Decimal(10, 2)), 1)
GO
SET IDENTITY_INSERT [dbo].[Tarifa] OFF
GO
SET IDENTITY_INSERT [dbo].[Vuelo] ON
GO
INSERT [dbo].[Vuelo] ([Id], [IdTarifa], [Fecha], [Hora], [IdAvion], [Activo]) VALUES (1, 1, N'30-10-2019', N'18:30', 1,
1)
GO
INSERT [dbo].[Vuelo] ([Id], [IdTarifa], [Fecha], [Hora], [IdAvion], [Activo]) VALUES (2, 5, N'01-11-2019', N'05:00', 5,
1)
GO
INSERT [dbo].[Vuelo] ([Id], [IdTarifa], [Fecha], [Hora], [IdAvion], [Activo]) VALUES (3, 2, N'28-10-2019', N'00:00', 2,
1)
GO
INSERT [dbo].[Vuelo] ([Id], [IdTarifa], [Fecha], [Hora], [IdAvion], [Activo]) VALUES (4, 1, N'27-11-2019', N'12:00', 3,
1)
GO
INSERT [dbo].[Vuelo] ([Id], [IdTarifa], [Fecha], [Hora], [IdAvion], [Activo]) VALUES (5, 3, N'26-10-2019', N'23:45', 4,
1)
GO
SET IDENTITY_INSERT [dbo].[Vuelo] OFF
GO
Guía de Laboratorio
Herramientas de Programación 1 – Entity framework – SQL Server
……….14
______________________________________________________________________
______________________
i. Validamos que el script se ha ejecutado correctamente (no debe existir ningún mensaje de error):
j. Realizamos algunas consultas para validar la existencia de datos, por ejemplo, para ver que Tarifas tenemos
registrado en la BD ejecutamos:
SELECT T.Id, T.IdCiudadOrigen, C1.Nombre AS 'Origen',
T.IdCiudadDestino, C2.Nombre AS 'Destino',
T.IdTipoServicio, TS.Nombre, T.Precio, IIF(T.Activo > 0, 'SI', 'NO') AS 'Activo'
FROM Tarifa T
INNER JOIN Ciudad C1 ON T.IdCiudadOrigen = C1.Id
INNER JOIN Ciudad C2 ON T.IdCiudadDestino = C2.Id
INNER JOIN TipoServicio TS ON T.IdTipoServicio = TS.id;
k. Debemos obtener:
Objetivos
Instalar Entity Framework en Visual Studio.
Introducción:
Durante esta actividad, vamos a dar validar si ya tenemos instalado Entity Framework, si no lo tenemos instalado
pasamos a instalarlo.
Guía de Laboratorio
Herramientas de Programación 1 – Entity framework – SQL Server
……….15
______________________________________________________________________
______________________
Paso 1. Validar si tenemos instalado Entity Framework.
d. En la pestaña Instalado, dentro del cuadro de texto de búsqueda ponemos “Entity Framework” y presionamos la
tecla Enter, si se muestra el mensaje que indica que no está instalado pasaremos a instalarlo.
Guía de Laboratorio
Herramientas de Programación 1 – Entity framework – SQL Server
……….16
______________________________________________________________________
______________________
Paso 2. Instalar Entity Framework.
a. Seleccionamos la pestaña “Examina”, dentro del cuadro de texto de búsqueda ponemos “Entity Framework” y
presionamos la tecla Enter.
b. De la lista de paquetes encontrados seleccionamos el primero “EntityFramework”:
c. Hacemos check en la casilla “Semana11”, verificamos que la versión sea la reciente más estable y presionamos el
botón “Instalar”.
Objetivos
Crear en Visual Studio un origen de datos a una BD SQL Server.
Introducción:
Durante esta actividad, vamos aprender a crear una conexión a una BD SQL Server.
Guía de Laboratorio
Herramientas de Programación 1 – Entity framework – SQL Server
……….18
______________________________________________________________________
______________________
Paso 1. Crear una conexión a la BD BD_LATAM.
a. En un lugar vacío de la franja izquierda hacemos click derecho y seleccionamos la opción “Orígenes de Datos”
Guía de Laboratorio
Herramientas de Programación 1 – Entity framework – SQL Server
……….19
______________________________________________________________________
______________________
b. Seleccionamos la opción “Agregar nuevo origen de datos”
j. Como por el momento solo tenemos tablas en nuestra BD, seleccionamos todas las tablas de la BD_LATAM y
presionamos el botón “Finalizar”.
Guía de Laboratorio
Herramientas de Programación 1 – Entity framework – SQL Server
……….24
______________________________________________________________________
______________________
k. En el panel de “Orígenes de datos” ya podemos visualizar la nueva conexión.
l. Si hacemos doble click en BD_LATAMDataSet.xsd visualizaremos las tablas que hemos seleccionado para el
origen de datos.
ACTIVIDAD VIRTUAL
Revisa y analiza los siguientes enlaces que se encuentran en la plataforma virtual, luego desarrolla las actividades
propuestas:
ORM.
https://www.youtube.com/watch?v=kBZjaabLUtk
Entity Framework.
https://docs.microsoft.com/es-es/dotnet/framework/data/adonet/ef/overview
1. Explicar y dar ejemplos de cinco sentencias SQL de tipo DDL (Lenguaje de definición de datos).
2. Explicar y dar ejemplos de cinco sentencias SQL de tipo DML (Lenguaje de manipulación de datos).
3. En la base de datos BD_LATAM crear un procedimiento almacenado (SP) que devuelva el detalle de las tarifas
activas. El SP debe recibir como parámetros:
Ciudad de Origen
Ciudad de Destino
Tipo de servicio
4. En la base de datos BD_LATAM crear un procedimiento almacenado (SP) que devuelva el detalle de los vuelos
activos. El SP debe recibir como parámetros:
Ciudad de Origen
Ciudad de Destino
Fecha