Professional Documents
Culture Documents
Fecha:
Ciclo:
Pgina: 1/24
VI
Seccin:
Docentes: Ing. Anbal Sardn Paniagua
Ciclo Acd.
Alumno:
Nota:
2014-1B
OBJETIVOS:
Conocer los conceptos bsicos de Entity Framework.
Descubrir la estructura de Entity Framework.
REQUISITOS:
Sistema Operativo Windows
MS Visual Studio 2010
Pizarra. Plumn, mota
INFORMACIN:
INTRODUCCIN A ENTITY FRAMEWORK
Entity Framework es un conjunto de tecnologas de ADO.NET que permiten el desarrollo de aplicaciones de
software orientadas a datos. Los arquitectos y programadores de aplicaciones orientadas a datos se han
enfrentado a la necesidad de lograr dos objetivos muy diferentes. Deben modelar las entidades, las relaciones y
la lgica de los problemas empresariales que resuelven, y tambin deben trabajar con los motores de datos que
se usan para almacenar y recuperar los datos. Los datos pueden abarcar varios sistemas de almacenamiento,
cada uno con sus propios protocolos; incluso las aplicaciones que funcionan con un nico sistema de
almacenamiento deben equilibrar los requisitos del sistema de almacenamiento con respecto a los requisitos de
escribir un cdigo de aplicacin eficaz y fcil de mantener.
Entity Framework permite a los programadores trabajar con datos en forma de objetos y propiedades especficos
del dominio, por ejemplo, con clientes y direcciones, sin tener que pensar en las tablas de las bases de datos
subyacentes y en las columnas en las que se almacenan estos datos. Para ello, se eleva el nivel de abstraccin
en la que los programadores pueden trabajar al tratar con datos y se reduce el cdigo requerido para crear y
mantener las aplicaciones orientadas a datos.
Dado que Entity Framework es un componente de .NET Framework, las aplicaciones de Entity Framework se
pueden ejecutar en cualquier equipo en que est instalado .NET Framework 3.5 Service Pack 1 (SP1).
Pgina: 2/24
El modelo conceptual define las entidades y relaciones del sistema que se est modelando.
El modelo lgico de una base de datos relacional normaliza las entidades y relaciones en tablas con
restricciones de claves externas.
El modelo fsico abarca las capacidades de un motor de datos determinado especificando los detalles
del almacenamiento en forma de particiones e ndices.
Los administradores de bases de datos refinan el modelo fsico para mejorar el rendimiento, pero los
programadores que escriben el cdigo de la aplicacin principalmente se limitan a trabajar con el modelo lgico
escribiendo consultas SQL y llamando a procedimientos almacenados.
Los modelos conceptuales se suelen usar como una herramienta para capturar y comunicar los requisitos de
una aplicacin, con frecuencia como diagramas inertes que se ven y se explican en las primeras etapas de un
proyecto, y a continuacin se abandonan. Muchos equipos de desarrolladores omiten la creacin de un modelo
conceptual y comienzan especificando las tablas, columnas y claves en una base de datos relacional.
Entity Framework da vida a los modelos conceptuales permitiendo a los programadores consultar las entidades y
relaciones en el modelo conceptual al tiempo que se basan en Entity Framework para traducir esas operaciones
en los comandos especficos del origen de datos. Esto libera a las aplicaciones de las dependencias codificadas
de forma rgida en un origen de datos determinado.
Pgina: 3/24
El modelo conceptual, el modelo de almacenamiento y la asignacin entre los dos se expresan en una
especificacin externa, conocida como el Entity Data Model (EDM).
El modelo de almacenamiento y las asignaciones pueden cambiar segn sea necesario sin necesidad de
cambiar el modelo conceptual, las clases de datos o el cdigo de la aplicacin. Dado que los modelos de
almacenamiento son especficos del proveedor, puede trabajar con un modelo conceptual coherente a travs de
varios orgenes de datos.
Un EDM se define con los tres modelos y archivos de asignacin siguientes que tienen las extensiones de
nombre de archivo correspondientes:
Archivo de lenguaje de especificacin de asignaciones (.msl): define la asignacin entre los modelos
conceptual y de almacenamiento.
Entity Framework utiliza estos modelos y archivos de asignacin basados en XML para transformar las
operaciones de creacin, lectura, actualizacin y eliminacin de las entidades y relaciones del modelo
conceptual en las operaciones equivalentes en el origen de datos. El EDM incluso permite asignar las entidades
del modelo conceptual a los procedimientos almacenados en el origen de datos.
Pgina: 4/24
restricciones FOREIGN KEY de los modelos lgicos a las entidades y relaciones de los modelos conceptuales.
Esto permite una mayor flexibilidad al definir los objetos y optimizar el modelo lgico.
Las herramientas de Entity Data Model generan clases de datos extensibles segn el modelo conceptual. Se
trata de clases parciales que se pueden extender con miembros adicionales que el programador agrega. Las
clases que se generan para un modelo conceptual determinado derivan de las clases base que proporcionan
Servicios de objeto para materializar las entidades como objetos y para realizar un seguimiento de los cambios y
guardarlos. Los programadores pueden utilizar estas clases para trabajar con las entidades y relaciones como
objetos relacionados mediante propiedades de navegacin.
3. OBTENER ACCESO A LOS DATOS DE ENTIDAD Y CAMBIARLOS
Como algo ms que otra solucin de asignacin objeto-relacional, Entity Framework trata fundamentalmente de
permitir que las aplicaciones obtengan acceso y cambien los datos que estn representados como entidades y
relaciones en el modelo conceptual. Servicios de objeto usa el EDM para traducir las consultas de objeto con los
tipos de entidad que se representan en el modelo conceptual en consultas especficas del origen de datos. Los
resultados de la consulta se materializan en los objetos que Servicios de objeto administra. Entity Framework
proporciona las maneras siguientes de consultar un EDM y devolver objetos:
LINQ to Entities: proporciona compatibilidad con Language-Integrated Query (LINQ) para consultar los
tipos de entidad que se definen en un modelo conceptual.
Entity SQL: dialecto independiente del almacenamiento de SQL que funciona directamente con las
entidades del modelo conceptual y que admite caractersticas del EDM como la herencia y las relaciones.
Entity SQL se utiliza con las consultas de objeto y con las consultas que se ejecutan con el proveedor de
EntityClient.
Mtodos del generador de consultas: permite construir consultas de Entity SQL utilizando los mtodos de
consulta del estilo de LINQ.
El Entity Framework incluye el proveedor de datos de EntityClient. Este proveedor administra las conexiones,
traduce las consultas de entidad en consultas especficas del origen de datos y devuelve un lector de datos que
Servicios de objeto usa para materializar los datos de la entidad en los objetos. Cuando no se requiere la
materializacin de los objetos, el proveedor de EntityClient tambin se puede utilizar como un proveedor de
datos ADO.NET estndar habilitando las aplicaciones para ejecutar las consultas de Entity SQL y usar el lector
de datos de solo lectura devuelto.
El diagrama siguiente muestra la arquitectura de Entity Framework para el acceso a datos:
Pgina: 5/24
El Entity Framework genera una clase derivada de ObjectContext que representa el contenedor de entidades
definido en el modelo conceptual. Este contexto del objeto proporciona los medios para realizar el seguimiento
de los cambios y administrar las identidades, la simultaneidad y las relaciones. Esta clase tambin expone un
mtodo SaveChanges que escribe las inserciones, actualizaciones y eliminaciones en el origen de datos. Al
igual que las consultas, estas modificaciones son realizadas bien por los comandos que el sistema genera
automticamente o bien por los procedimientos almacenados que el programador especifica.
4. HERRAMIENTAS DE ENTITY DATA MODEL
Junto con el motor de tiempo de ejecucin de Entity Framework, .NET Framework 3.5 SP1 incluye el generador de
EDM (EdmGen.exe). Esta utilidad de smbolo del sistema se conecta a un origen de datos y genera un EDM
basado en una asignacin unvoca entre las entidades y las tablas.
Tambin usa un archivo de modelo conceptual (.csdl) para generar un archivo de nivel de objeto que contiene
clases que representan tipos de entidad y ObjectContext..
Visual Studio 2008 incluye una variada compatibilidad con las herramientas que permiten generar y mantener un
EDM en una aplicacin de Visual Studio. El Entity Data Model Designer permite crear escenarios de asignacin
avanzados, por ejemplo de la herencia de tabla por tipo y de tabla por jerarqua, y entidades de divisin que se
Pgina: 6/24
PROCEDIMENTO:
CREAR LA APLICACIN DE EJEMPLO SCHOOL
En esta tarea, se crea el esquema de la base de datos School y se cargan datos en ella. Para ello, se usa SQL
Server Management Studio o SQL Server Management Studio Express para ejecutar un script de Transact-SQL.
La base de datos School resultante se usa como origen de datos relacional en el resto de las tareas.
1. En el men Archivo, elija Nuevo y haga clic en Consulta de motor de base de datos.
2. En el cuadro de dilogo Conectar al motor de base de datos, escriba el host local o el nombre de la
instancia de SQL Server local, y haga clic en Conectar.
3. Pegue el siguiente script de Transact-SQL en la ventana de consulta y, a continuacin, haga clic en Ejecutar.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
USE [master];
GO
IF EXISTS (SELECT * FROM sys.databases WHERE name = 'School')
DROP DATABASE School;
GO
-- Create the School database.
CREATE DATABASE School;
GO
-- Specify a simple recovery model
-- to keep the log growth to a minimum.
ALTER DATABASE School
SET RECOVERY SIMPLE;
GO
USE School;
GO
-- Create the Department table.
IF NOT EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[Department]')
AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[Department](
Pgina: 7/24
Pgina: 8/24
Pgina: 9/24
Pgina: 10/24
Pgina: 11/24
Pgina: 12/24
Pgina: 13/24
GO
-- Create GetStudentGrades stored procedure.
IF NOT EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[GetStudentGrades]')
AND type in (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'
CREATE PROCEDURE [dbo].[GetStudentGrades]
@StudentID int
AS
SELECT EnrollmentID, Grade FROM dbo.CourseGrade
WHERE StudentID = @StudentID
'
END
GO
-- Insert data into the Person table.
USE School
GO
SET IDENTITY_INSERT dbo.Person ON
GO
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (1, 'Abercrombie', 'Kim', '1995-03-11', null);
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (2, 'Barzdukas', 'Gytis', null, '2005-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (3, 'Justice', 'Peggy', null, '2001-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (4, 'Fakhouri', 'Fadi', '2002-08-06', null);
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (5, 'Harui', 'Roger', '1998-07-01', null);
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (6, 'Li', 'Yan', null, '2002-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (7, 'Norman', 'Laura', null, '2003-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (8, 'Olivotto', 'Nino', null, '2005-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (9, 'Tang', 'Wayne', null, '2005-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (10, 'Alonso', 'Meredith', null, '2002-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (11, 'Lopez', 'Sophia', null, '2004-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (12, 'Browning', 'Meredith', null, '2000-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (13, 'Anand', 'Arturo', null, '2003-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (14, 'Walker', 'Alexandra', null, '2000-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (15, 'Powell', 'Carson', null, '2004-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (16, 'Jai', 'Damien', null, '2001-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (17, 'Carlson', 'Robyn', null, '2005-09-01');
INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate,
VALUES (18, 'Zheng', 'Roger', '2004-02-12', null);
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
Pgina: 14/24
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
EnrollmentDate)
StartDate, Administrator)
StartDate, Administrator)
StartDate, Administrator)
StartDate, Administrator)
Credits, DepartmentID)
Credits, DepartmentID)
Credits, DepartmentID)
Credits, DepartmentID)
Credits, DepartmentID)
Credits, DepartmentID)
Credits, DepartmentID)
Credits, DepartmentID)
Credits, DepartmentID)
Credits, DepartmentID)
Days, [Time])
Days, [Time])
Days, [Time])
Days, [Time])
Days, [Time])
Days, [Time])
Pgina: 15/24
Location)
Location)
Location)
Location)
Location)
Location)
Location)
Location)
Location)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Grade)
Pgina: 16/24
Pgina: 17/24
Pgina: 18/24
1.
2.
3.
4.
Pgina: 19/24
1. Seleccione el proyecto CourseManager en el Explorador de soluciones, haga clic con el botn secundario,
elija Agregar y haga clic en Nuevo elemento.
2. Seleccione Entity Data Model de ADO.NET en el panel Plantillas.
3. Escriba School.edmx como nombre del modelo y haga clic en Agregar.
1.
2.
3.
4.
Seleccione Generar desde base de datos en el cuadro de dilogo Elegir contenido del modelo. Despus,
haga clic en Siguiente.
Haga clic en el botn Nueva conexin.
En el cuadro de dilogo Elegir origen de datos, seleccione su origen de datos y, a continuacin, haga clic en
Continuar.
En el cuadro de dilogo Propiedades de conexin, escriba su nombre de servidor, seleccione el mtodo de
autenticacin, escriba School como nombre de la base de datos y, a continuacin, haga clic en Aceptar.
El cuadro de dilogo Elegir la conexin de datos se actualiza con la configuracin de la conexin de base de
Pgina: 20/24
datos.
5.
Asegrese de que la opcin Guardar configuracin de conexin de entidad en App.Config como: est
seleccionada y el valor est establecido en SchoolEntities. Despus, haga clic en Siguiente.
Aparece el cuadro de dilogo Elija los objetos de base de datos.
6. Asegrese de que todas las tablas y procedimientos almacenados estn seleccionados y de que el valor
de Espacio de nombres del modelo es SchoolModel, y haga clic en Finalizar para completar el
asistente.
7. El asistente realiza las tareas siguientes:
Crea un archivo de cdigo fuente que contiene las clases que se generaron segn el EDM. Puede
ver el archivo de cdigo fuente expandiendo el archivo .edmx en el Explorador de soluciones.
Pgina: 21/24
2. En el men Ver, seleccione Otras ventanas y, a continuacin, haga clic en Mostrar el Explorador de
modelos de entidad.
De esta forma se muestra la ventana del Explorador de modelos de entidad.
3. Expanda los nodos SchoolModel y SchoolModel.Store para ver las definiciones de almacn y
conceptual, respectivamente.
4. En el men Ver, seleccione Otras ventanas, haga clic en Mostrar detalles de asignacin de entidades
y, a continuacin, haga clic en una entidad o asociacin en el diseador de entidades.
De este modo se muestra la ventana Detalles de asignacin de entidades con informacin acerca de la
asignacin relacional de objetos correspondiente al objeto seleccionado.
1.
Pgina: 22/24
Al principio del archivo de cdigo del formulario CourseViewer, agregue las instrucciones siguientes using
(C#) o Imports (Visual Basic) para hacer referencia al modelo creado a partir de la base de datos School y
del espacio de nombres de entidad.
using System.Data.Objects;
using System.Data.Objects.DataClasses;
2.
Al principio de la definicin de clase parcial del formulario CourseViewer, agregue el cdigo siguiente que crea
una instancia de ObjectContext.
// Create an ObjectContext instance based on SchoolEntity.
private SchoolEntities schoolContext;
Pgina: 23/24
2. Pegue el cdigo siguiente que carga los cursos que estn relacionados con el departamento seleccionado.
try
{
// Get the object for the selected department.
Department department =
(Department)this.departmentList.SelectedItem;
// Bind the grid view to the collection of Course objects
// that are related to the selected Department object.
courseGridView.DataSource = department.Course;
courseGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
INSERTAR Y ACTUALIZAR DATOS
En esta tarea, se guardarn en la base de datos los cambios efectuados en los objetos Course enlazados al
control DataGridView. Tambin se ejecutar la aplicacin del administrador del curso completada.
Para cerrar las conexiones eliminando el contexto del objeto de larga duracin
Pgina: 24/24
En el mtodo del controlador de eventos closeForm_Click, escriba el siguiente cdigo. Este cdigo
elimina el contexto del objeto antes de que se cierre el formulario.
// Dispose the object context.
schoolContext.Dispose();