LABO02 - Entity Framework - DRAI

download LABO02 - Entity Framework - DRAI

of 24

description

LINQ DRAI 2

Transcript of LABO02 - Entity Framework - DRAI

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 1/24

    Sesin Nro. 02-02 Fecha:

    Tema: Entity Framework

    Ciclo: VI Seccin:

    Docentes: Ing. Anbal Sardn Paniagua

    Ciclo Acd. 2014-1B

    Alumno: Nota: 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).

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 2/24

    1. DAR LA VIDA A LOS MODELOS CONCEPTUALES

    Un patrn de diseo antiguo y comn para el modelado de datos es la divisin del modelo en tres partes: un

    modelo conceptual, un modelo lgico y un modelo fsico.

    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.

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET 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 definicin de esquemas conceptuales (.csdl): define el modelo conceptual.

    Archivo de lenguaje de definicin de esquemas de almacenamiento (.ssdl): define el modelo de almacenamiento, que tambin se denomina modelo lgico.

    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.

    2. ASIGNAR OBJETOS A DATOS

    La programacin orientada a objetos supone un desafo al interactuar con sistemas de almacenamiento de

    datos. Aunque la organizacin de clases suele reflejar la organizacin de las tablas de bases de datos

    relacionales minuciosamente, el ajuste no es perfecto. Varias tablas normalizadas suelen corresponder a una

    sola clase y las relaciones entre las clases se representan de forma diferente a las relaciones entre tablas.

    Por ejemplo, para representar el cliente de un pedido de ventas, una clase Order utiliza una propiedad que contiene una referencia a una instancia de una clase Customer, pero una fila de la tabla Order en una base de datos contiene una columna de clave externa con un valor que corresponde a un valor de clave principal en la

    tabla Customer (o conjunto de columnas). Una clase Customer podra tener una propiedad denominada Orders que contuviera una coleccin de instancias de la clase Order, pero la tabla Customer en una base de datos no tiene ninguna columna comparable.

    Las soluciones existentes han intentado cubrir este hueco, que se suele denominar "desigualdad de impedancia", asignando nicamente clases y propiedades orientadas a objetos a las tablas y columnas relacionales.

    En lugar de seguir este enfoque tradicional, Entity Framework asigna las tablas relacionales, columnas y

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET 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:

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET 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

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 6/24

    asignan a varias tablas.

    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.

    Para crear la base de datos School y el esquema

    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](

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 7/24

    [DepartmentID] [int] NOT NULL, [Name] [nvarchar](50) NOT NULL, [Budget] [money] NOT NULL, [StartDate] [datetime] NOT NULL, [Administrator] [int] NULL, CONSTRAINT [PK_Department] PRIMARY KEY CLUSTERED ( [DepartmentID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- Create the Person table. IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Person]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[Person]( [PersonID] [int] IDENTITY(1,1) NOT NULL, [LastName] [nvarchar](50) NOT NULL, [FirstName] [nvarchar](50) NOT NULL, [HireDate] [datetime] NULL, [EnrollmentDate] [datetime] NULL, CONSTRAINT [PK_School.Student] PRIMARY KEY CLUSTERED ( [PersonID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- Create the OnsiteCourse table. IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[OnsiteCourse]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[OnsiteCourse]( [CourseID] [int] NOT NULL, [Location] [nvarchar](50) NOT NULL, [Days] [nvarchar](50) NOT NULL, [Time] [smalldatetime] NOT NULL, CONSTRAINT [PK_OnsiteCourse] PRIMARY KEY CLUSTERED ( [CourseID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- Create the OnlineCourse table. IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[OnlineCourse]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[OnlineCourse]( [CourseID] [int] NOT NULL, [URL] [nvarchar](100) NOT NULL,

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 8/24

    CONSTRAINT [PK_OnlineCourse] PRIMARY KEY CLUSTERED ( [CourseID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO --Create the CourseGrade table. IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CourseGrade]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[CourseGrade]( [EnrollmentID] [int] IDENTITY(1,1) NOT NULL, [CourseID] [int] NOT NULL, [StudentID] [int] NOT NULL, [Grade] [decimal](3, 2) NULL, CONSTRAINT [PK_CourseGrade] PRIMARY KEY CLUSTERED ( [EnrollmentID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- Create the CourseInstructor table. IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[CourseInstructor]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[CourseInstructor]( [CourseID] [int] NOT NULL, [PersonID] [int] NOT NULL, CONSTRAINT [PK_CourseInstructor] PRIMARY KEY CLUSTERED ( [CourseID] ASC, [PersonID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- Create the Course table. IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Course]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[Course]( [CourseID] [int] NOT NULL, [Title] [nvarchar](100) NOT NULL, [Credits] [int] NOT NULL, [DepartmentID] [int] NOT NULL, CONSTRAINT [PK_School.Course] PRIMARY KEY CLUSTERED ( [CourseID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY]

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 9/24

    END GO -- Create the OfficeAssignment table. IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[OfficeAssignment]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[OfficeAssignment]( [InstructorID] [int] NOT NULL, [Location] [nvarchar](50) NOT NULL, [Timestamp] [timestamp] NOT NULL, CONSTRAINT [PK_OfficeAssignment] PRIMARY KEY CLUSTERED ( [InstructorID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] END GO -- Define the relationship between OnsiteCourse and Course. IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_OnsiteCourse_Course]') AND parent_object_id = OBJECT_ID(N'[dbo].[OnsiteCourse]')) ALTER TABLE [dbo].[OnsiteCourse] WITH CHECK ADD CONSTRAINT [FK_OnsiteCourse_Course] FOREIGN KEY([CourseID]) REFERENCES [dbo].[Course] ([CourseID]) GO ALTER TABLE [dbo].[OnsiteCourse] CHECK CONSTRAINT [FK_OnsiteCourse_Course] GO -- Define the relationship between OnlineCourse and Course. IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_OnlineCourse_Course]') AND parent_object_id = OBJECT_ID(N'[dbo].[OnlineCourse]')) ALTER TABLE [dbo].[OnlineCourse] WITH CHECK ADD CONSTRAINT [FK_OnlineCourse_Course] FOREIGN KEY([CourseID]) REFERENCES [dbo].[Course] ([CourseID]) GO ALTER TABLE [dbo].[OnlineCourse] CHECK CONSTRAINT [FK_OnlineCourse_Course] GO -- Define the relationship between CourseGrade and Course. IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_CourseGrade_Course]') AND parent_object_id = OBJECT_ID(N'[dbo].[CourseGrade]')) ALTER TABLE [dbo].[CourseGrade] WITH CHECK ADD CONSTRAINT [FK_CourseGrade_Course] FOREIGN KEY([CourseID]) REFERENCES [dbo].[Course] ([CourseID]) GO ALTER TABLE [dbo].[CourseGrade] CHECK CONSTRAINT [FK_CourseGrade_Course] GO --Define the relationship between CourseGrade and Student. IF NOT EXISTS (SELECT * FROM sys.foreign_keys

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 10/24

    WHERE object_id = OBJECT_ID(N'[dbo].[FK_CourseGrade_Student]') AND parent_object_id = OBJECT_ID(N'[dbo].[CourseGrade]')) ALTER TABLE [dbo].[CourseGrade] WITH CHECK ADD CONSTRAINT [FK_CourseGrade_Student] FOREIGN KEY([StudentID]) REFERENCES [dbo].[Person] ([PersonID]) GO ALTER TABLE [dbo].[CourseGrade] CHECK CONSTRAINT [FK_CourseGrade_Student] GO -- Define the relationship between CourseInstructor and Course. IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_CourseInstructor_Course]') AND parent_object_id = OBJECT_ID(N'[dbo].[CourseInstructor]')) ALTER TABLE [dbo].[CourseInstructor] WITH CHECK ADD CONSTRAINT [FK_CourseInstructor_Course] FOREIGN KEY([CourseID]) REFERENCES [dbo].[Course] ([CourseID]) GO ALTER TABLE [dbo].[CourseInstructor] CHECK CONSTRAINT [FK_CourseInstructor_Course] GO -- Define the relationship between CourseInstructor and Person. IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_CourseInstructor_Person]') AND parent_object_id = OBJECT_ID(N'[dbo].[CourseInstructor]')) ALTER TABLE [dbo].[CourseInstructor] WITH CHECK ADD CONSTRAINT [FK_CourseInstructor_Person] FOREIGN KEY([PersonID]) REFERENCES [dbo].[Person] ([PersonID]) GO ALTER TABLE [dbo].[CourseInstructor] CHECK CONSTRAINT [FK_CourseInstructor_Person] GO -- Define the relationship between Course and Department. IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_Course_Department]') AND parent_object_id = OBJECT_ID(N'[dbo].[Course]')) ALTER TABLE [dbo].[Course] WITH CHECK ADD CONSTRAINT [FK_Course_Department] FOREIGN KEY([DepartmentID]) REFERENCES [dbo].[Department] ([DepartmentID]) GO ALTER TABLE [dbo].[Course] CHECK CONSTRAINT [FK_Course_Department] GO --Define the relationship between OfficeAssignment and Person. IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_OfficeAssignment_Person]') AND parent_object_id = OBJECT_ID(N'[dbo].[OfficeAssignment]')) ALTER TABLE [dbo].[OfficeAssignment] WITH CHECK ADD CONSTRAINT [FK_OfficeAssignment_Person] FOREIGN KEY([InstructorID]) REFERENCES [dbo].[Person] ([PersonID]) GO ALTER TABLE [dbo].[OfficeAssignment] CHECK CONSTRAINT [FK_OfficeAssignment_Person] GO -- Create InsertOfficeAssignment stored procedure.

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 11/24

    IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[InsertOfficeAssignment]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[InsertOfficeAssignment] @InstructorID int, @Location nvarchar(50) AS INSERT INTO dbo.OfficeAssignment (InstructorID, Location) VALUES (@InstructorID, @Location); IF @@ROWCOUNT > 0 BEGIN SELECT [Timestamp] FROM OfficeAssignment WHERE InstructorID=@InstructorID; END ' END GO --Create the UpdateOfficeAssignment stored procedure. IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[UpdateOfficeAssignment]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[UpdateOfficeAssignment] @InstructorID int, @Location nvarchar(50), @OrigTimestamp timestamp AS UPDATE OfficeAssignment SET Location=@Location WHERE InstructorID=@InstructorID AND [Timestamp]=@OrigTimestamp; IF @@ROWCOUNT > 0 BEGIN SELECT [Timestamp] FROM OfficeAssignment WHERE InstructorID=@InstructorID; END ' END GO -- Create the DeleteOfficeAssignment stored procedure. IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[DeleteOfficeAssignment]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[DeleteOfficeAssignment] @InstructorID int AS DELETE FROM OfficeAssignment WHERE InstructorID=@InstructorID; ' END GO -- Create the DeletePerson stored procedure.

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 12/24

    IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[DeletePerson]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[DeletePerson] @PersonID int AS DELETE FROM Person WHERE PersonID = @PersonID; ' END GO -- Create the UpdatePerson stored procedure. IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[UpdatePerson]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[UpdatePerson] @PersonID int, @LastName nvarchar(50), @FirstName nvarchar(50), @HireDate datetime, @EnrollmentDate datetime AS UPDATE Person SET LastName=@LastName, FirstName=@FirstName, HireDate=@HireDate, EnrollmentDate=@EnrollmentDate WHERE PersonID=@PersonID; ' END GO -- Create the InsertPerson stored procedure. IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[InsertPerson]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[InsertPerson] @LastName nvarchar(50), @FirstName nvarchar(50), @HireDate datetime, @EnrollmentDate datetime AS INSERT INTO dbo.Person (LastName, FirstName, HireDate, EnrollmentDate) VALUES (@LastName, @FirstName, @HireDate, @EnrollmentDate); SELECT SCOPE_IDENTITY() as NewPersonID; ' END

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET 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, EnrollmentDate) VALUES (1, 'Abercrombie', 'Kim', '1995-03-11', null); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (2, 'Barzdukas', 'Gytis', null, '2005-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (3, 'Justice', 'Peggy', null, '2001-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (4, 'Fakhouri', 'Fadi', '2002-08-06', null); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (5, 'Harui', 'Roger', '1998-07-01', null); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (6, 'Li', 'Yan', null, '2002-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (7, 'Norman', 'Laura', null, '2003-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (8, 'Olivotto', 'Nino', null, '2005-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (9, 'Tang', 'Wayne', null, '2005-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (10, 'Alonso', 'Meredith', null, '2002-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (11, 'Lopez', 'Sophia', null, '2004-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (12, 'Browning', 'Meredith', null, '2000-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (13, 'Anand', 'Arturo', null, '2003-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (14, 'Walker', 'Alexandra', null, '2000-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (15, 'Powell', 'Carson', null, '2004-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (16, 'Jai', 'Damien', null, '2001-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (17, 'Carlson', 'Robyn', null, '2005-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (18, 'Zheng', 'Roger', '2004-02-12', null);

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 14/24

    INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (19, 'Bryant', 'Carson', null, '2001-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (20, 'Suarez', 'Robyn', null, '2004-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (21, 'Holt', 'Roger', null, '2004-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (22, 'Alexander', 'Carson', null, '2005-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (23, 'Morgan', 'Isaiah', null, '2001-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (24, 'Martin', 'Randall', null, '2005-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (25, 'Kapoor', 'Candace', '2001-01-15', null); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (26, 'Rogers', 'Cody', null, '2002-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (27, 'Serrano', 'Stacy', '1999-06-01', null); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (28, 'White', 'Anthony', null, '2001-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (29, 'Griffin', 'Rachel', null, '2004-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (30, 'Shan', 'Alicia', null, '2003-09-01'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (31, 'Stewart', 'Jasmine', '1997-10-12', null); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (32, 'Xu', 'Kristen', '2001-7-23', null); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (33, 'Gao', 'Erica', null, '2003-01-30'); INSERT INTO dbo.Person (PersonID, LastName, FirstName, HireDate, EnrollmentDate) VALUES (34, 'Van Houten', 'Roger', '2000-12-07', null); GO SET IDENTITY_INSERT dbo.Person OFF GO -- Insert data into the Department table. INSERT INTO dbo.Department (DepartmentID, [Name], Budget, StartDate, Administrator) VALUES (1, 'Engineering', 350000.00, '2007-09-01', 2); INSERT INTO dbo.Department (DepartmentID, [Name], Budget, StartDate, Administrator) VALUES (2, 'English', 120000.00, '2007-09-01', 6); INSERT INTO dbo.Department (DepartmentID, [Name], Budget, StartDate, Administrator) VALUES (4, 'Economics', 200000.00, '2007-09-01', 4); INSERT INTO dbo.Department (DepartmentID, [Name], Budget, StartDate, Administrator) VALUES (7, 'Mathematics', 250000.00, '2007-09-01', 3); GO -- Insert data into the Course table. INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (1050, 'Chemistry', 4, 1); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (1061, 'Physics', 4, 1); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (1045, 'Calculus', 4, 7); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (2030, 'Poetry', 2, 2); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID)

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 15/24

    VALUES (2021, 'Composition', 3, 2); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (2042, 'Literature', 4, 2); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (4022, 'Microeconomics', 3, 4); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (4041, 'Macroeconomics', 3, 4); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (4061, 'Quantitative', 2, 4); INSERT INTO dbo.Course (CourseID, Title, Credits, DepartmentID) VALUES (3141, 'Trigonometry', 4, 7); GO -- Insert data into the OnlineCourse table. INSERT INTO dbo.OnlineCourse (CourseID, URL) VALUES (2030, 'http://www.fineartschool.net/Poetry'); INSERT INTO dbo.OnlineCourse (CourseID, URL) VALUES (2021, 'http://www.fineartschool.net/Composition'); INSERT INTO dbo.OnlineCourse (CourseID, URL) VALUES (4041, 'http://www.fineartschool.net/Macroeconomics'); INSERT INTO dbo.OnlineCourse (CourseID, URL) VALUES (3141, 'http://www.fineartschool.net/Trigonometry'); --Insert data into OnsiteCourse table. INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time]) VALUES (1050, '123 Smith', 'MTWH', '11:30'); INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time]) VALUES (1061, '234 Smith', 'TWHF', '13:15'); INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time]) VALUES (1045, '121 Smith','MWHF', '15:30'); INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time]) VALUES (4061, '22 Williams', 'TH', '11:15'); INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time]) VALUES (2042, '225 Adams', 'MTWH', '11:00'); INSERT INTO dbo.OnsiteCourse (CourseID, Location, Days, [Time]) VALUES (4022, '23 Williams', 'MWF', '9:00'); -- Insert data into the CourseInstructor table. INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (1050, 1); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (1061, 31); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (1045, 5); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (2030, 4); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (2021, 27); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (2042, 25); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (4022, 18); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (4041, 32); INSERT INTO dbo.CourseInstructor(CourseID, PersonID) VALUES (4061, 34); GO

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 16/24

    --Insert data into the OfficeAssignment table. INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (1, '17 Smith'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (4, '29 Adams'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (5, '37 Williams'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (18, '143 Smith'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (25, '57 Adams'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (27, '271 Williams'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (31, '131 Smith'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (32, '203 Williams'); INSERT INTO dbo.OfficeAssignment(InstructorID, Location) VALUES (34, '213 Smith'); -- Insert data into the CourseGrade table. INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (2021, 2, 4); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (2030, 2, 3.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (2021, 3, 3); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (2030, 3, 4); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (2021, 6, 2.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (2042, 6, 3.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (2021, 7, 3.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (2042, 7, 4); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (2021, 8, 3); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (2042, 8, 3); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4041, 9, 3.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4041, 10, null); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4041, 11, 2.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4041, 12, null); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4061, 12, null); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4022, 14, 3); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4022, 13, 4); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4061, 13, 4); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade)

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 17/24

    VALUES (4041, 14, 3); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4022, 15, 2.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4022, 16, 2); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4022, 17, null); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4022, 19, 3.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4061, 20, 4); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4061, 21, 2); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4022, 22, 3); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4041, 22, 3.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4061, 22, 2.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (4022, 23, 3); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (1045, 23, 1.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (1061, 24, 4); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (1061, 25, 3); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (1050, 26, 3.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (1061, 26, 3); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (1061, 27, 3); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (1045, 28, 2.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (1050, 28, 3.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (1061, 29, 4); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (1050, 30, 3.5); INSERT INTO dbo.CourseGrade (CourseID, StudentID, Grade) VALUES (1061, 30, 4); GO

    Para revisar las tablas de la base de datos school

    1. En el men Archivo, haga clic en Conectar Explorador de objetos. 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. En la ventana Explorador de objetos, expanda el nodo correspondiente a la instancia recientemente

    conectada; a continuacin, expanda sucesivamente Bases de datos, School y Tablas; y, por ltimo,

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 18/24

    revise la lista de objetos de tabla en la base de datos.

    A continuacin se muestra un diagrama del esquema de la base de datos School.

    CREAR LA APLICACIN DEL ADMINISTRADOR DEL CURSO

    En esta tarea, se va a crear la aplicacin para Windows Administrador de cursos mediante Visual Studio 2008.

    Para crear la aplicacin Administrador de cursos mediante Visual Studio

    1. En el men Archivo, haga clic en Nuevo proyecto. 2. Elija Visual Basic o Visual C# en el panel Tipos de proyecto. 3. En el panel Plantillas, seleccione Aplicacin de Windows Forms. 4. Escriba CourseManager como nombre del proyecto y haga clic en Aceptar.

    Para crear el formulario Visor del curso

    1. En el proyecto CourseManager, seleccione el formulario predeterminado (Form1). 2. En el panel Propiedades del archivo, cambie el Nombre de archivo a CourseViewer.vb o

    CourseViewer.cs.

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 19/24

    3. En el Explorador de soluciones, haga doble clic en CourseViewer.vb o en CourseViewer.cs para abrir

    el formulario. 4. En el panel Propiedades, cambie la propiedad Name a CourseViewer y la propiedad Text a Visor del

    curso. 5. En el Cuadro de herramientas, expanda Controles comunes, arrastre el control ComboBox al

    formulario y cambie el nombre del control a departmentList. 6. En el Cuadro de herramientas, arrastre el control Button al formulario, cambie el nombre del control a

    closeForm y cambie el valor de Text a Cerrar. 7. En el Cuadro de herramientas, expanda Datos, arrastre el control DataGridView al formulario y cambie

    el nombre del control a courseGridView. 8. Haga doble clic en el control de botn closeForm.

    De esta forma se abre la pgina de cdigos del formulario y se crea el mtodo del controlador de eventos closeForm_Click.

    9. En el mtodo del controlador de eventos closeForm_Click, escriba el cdigo siguiente que cierra el formulario:

    // Close the form. this.Close();

    GENERAR EL ENTITY DATA MODEL SCHOOL

    En esta tarea, aprender a usar el asistente de Entity Data Model para generar un Entity Data Model (EDM). Este EDM define un conjunto de archivos de asignaciones de entidad a tabla para el modelo School.

    Para agregar la plantilla de elementos de Entity Data Model de ADO.NET

    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.

    Para generar EDM

    1. Seleccione Generar desde base de datos en el cuadro de dilogo Elegir contenido del modelo. Despus, haga clic en Siguiente.

    2. Haga clic en el botn Nueva conexin. 3. En el cuadro de dilogo Elegir origen de datos, seleccione su origen de datos y, a continuacin, haga clic en

    Continuar. 4. 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

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET 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: Agrega referencias a los ensamblados System.Data.Entity, System.Security y

    System.Runtime.Serialization. Genera el archivo School.edmx que define el EDM. 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. Crea un archivo App.Config.

    Para ver EDM en el diseador de Entity Data Model de ADO.NET

    1. En el Explorador de soluciones, haga doble clic en el archivo School.edmx.

    De este modo se muestra el modelo School en la ventana del diseador de Entity Data Model de ADO.NET, segn se muestra en el diagrama siguiente.

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET 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.

    CONSULTAR ENTIDADES Y ASOCIACIONES

    En esta tarea se crearn consultas con establecimiento inflexible de tipos en los objetos CLR que representan a las entidades y asociaciones del modelo School, y se enlazarn controles de presentacin a las colecciones de objetos que devuelvan estas consultas.

    Para consultar los departamentos de la base de datos School

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET Pgina: 22/24

    1. 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;

    3. En el diseador de formularios de CourseViewer, haga doble clic en el formulario CourseViewer.

    De esta forma se abre la pgina de cdigo del formulario y se crea el mtodo del controlador de eventos courseViewer _Load.

    4. En el mtodo del controlador de eventos courseViewer _Load, copie y pegue el cdigo siguiente que define la DataGridView, ejecuta una consulta que devuelve una coleccin de departamentos (ordenados por Name) y enlaza la coleccin de objetos Department al control departmentList.

    // Initialize the ObjectContext. schoolContext = new SchoolEntities(); // Define a query that returns all Department objects and related // Course objects, ordered by name. ObjectQuery departmentQuery = schoolContext.Department.Include("Course").OrderBy("it.Name"); try { // Bind the ComboBox control to the query, which is // executed during data binding. this.departmentList.DataSource = departmentQuery; this.departmentList.DisplayMember = "Name"; } catch (Exception ex) { MessageBox.Show(ex.Message); }

    Para mostrar cursos para el departamento seleccionado

    1. En el diseador de formularios de CourseViewer, haga doble clic en el control departmentList.

    De este modo, se crea mtodo del controlador de eventos departmentList_SelectedIndexChanged.

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET 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.

    Paga guardar los cambios realizados en los objetos

    1. En el Cuadro de herramientas, expanda Controles comunes, arrastre el control Button al diseador de formularios de CourseViewer, cambie el nombre del control a saveChanges y cambie el valor Text a Update.

    2. En el diseador de formularios de CourseViewer, haga doble clic en el control saveChanges.

    De este modo, se crea mtodo del controlador de eventos saveChanges_Click.

    3. Pegue el cdigo siguiente que guarda los cambios de los objetos en la base de datos.

    try { int numChanges; // Save object changes to the database, display a message, // and refresh the form. numChanges = schoolContext.SaveChanges(); MessageBox.Show(numChanges.ToString() + " change(s) saved to the database."); this.Refresh(); } catch (Exception ex) { MessageBox.Show(ex.Message); }

    Para cerrar las conexiones eliminando el contexto del objeto de larga duracin

  • Facultad de Ingenieras y Arquitectura Escuela Profesional de Ingeniera de Sistemas e Informtica

    LABORATORIO DE DESARROLLO RAPIDO DE APLICACIONES PARA INTERNET 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();

    Para generar y ejecutar la aplicacin de programacin de clases

    1. En el men Depurar, seleccione Iniciar depuracin o Iniciar sin depurar.

    De esta forma se genera y se inicia la aplicacin.

    2. Cuando se cargue el formulario, seleccione un departamento en el control ComboBox.

    Se muestran los cursos pertenecientes a ese departamento.

    3. En la DataGridView, actualice la informacin del curso o agregue un curso nuevo, y haga clic en Update.

    De esta forma se guardan los cambios en la base de datos y se muestra un cuadro de mensaje que indica el nmero de cambios guardados.

    Firma del Docente