Compartir vía


Tutorial: Introducción a EF Database First mediante MVC 5

Con MVC, Entity Framework y scaffolding de ASP.NET, puede crear una aplicación web que proporcione una interfaz a una base de datos existente. En esta serie de tutoriales se muestra cómo generar código automáticamente que permita a los usuarios mostrar, editar, crear y eliminar datos que residen en una tabla de base de datos. El código generado corresponde a las columnas de la tabla de base de datos. En la última parte de la serie, aprenderá a agregar anotaciones de datos al modelo de datos para especificar los requisitos de validación y mostrar el formato. Cuando haya terminado, puede avanzar a un artículo de Azure para aprender a implementar una aplicación .NET y una base de datos SQL en Azure App Service.

En este tutorial se muestra cómo empezar con una base de datos existente y crear rápidamente una aplicación web que permita a los usuarios interactuar con los datos. Usa Entity Framework 6 y MVC 5 para compilar la aplicación web. La característica scaffolding de ASP.NET le permite generar código automáticamente para mostrar, actualizar, crear y eliminar datos. Con las herramientas de publicación de Visual Studio, puede implementar fácilmente el sitio y la base de datos en Azure.

Esta parte de la serie se centra en crear una base de datos y rellenarla con datos.

Esta serie fue escrita con contribuciones de Tom Dykstra y Rick Anderson. Se ha mejorado en función de los comentarios de los usuarios en la sección de comentarios.

En este tutorial, hizo lo siguiente:

  • Configuración de la base de datos

Requisitos previos

Visual Studio 2017

Configuración de la base de datos

Para imitar el entorno de tener una base de datos existente, primero creará una base de datos con algunos datos rellenados previamente y, a continuación, creará la aplicación web que se conecta a la base de datos.

Este tutorial se desarrolló mediante LocalDB con Visual Studio 2017. Puede usar un servidor de bases de datos existente en lugar de LocalDB, pero dependiendo de la versión de Visual Studio y del tipo de base de datos, es posible que no se admita todas las herramientas de datos de Visual Studio. Si las herramientas no están disponibles para la base de datos, es posible que tenga que realizar algunos de los pasos específicos de la base de datos en el conjunto de administración de la base de datos.

Si tiene un problema con las herramientas de base de datos de la versión de Visual Studio, asegúrese de que ha instalado la versión más reciente de las herramientas de base de datos. Para obtener información sobre cómo actualizar o instalar las herramientas de base de datos, vea Microsoft SQL Server Data Tools.

Inicie Visual Studio y cree un proyectode base de datos de SQL Server. Asigne al proyecto el nombre ContosoUniversityData.

create database project

Ahora tiene un proyecto de base de datos vacío. Para asegurarse de que puede implementar esta base de datos en Azure, establecerá Azure SQL Database como plataforma de destino para el proyecto. Establecer la plataforma de destino no implementa realmente la base de datos; solo significa que el proyecto de base de datos comprobará que el diseño de la base de datos es compatible con la plataforma de destino. Para establecer la plataforma de destino, abra las propiedades del proyecto y seleccione Microsoft Azure SQL Database para la plataforma de destino.

Puede crear las tablas necesarias para este tutorial agregando scripts SQL que definen las tablas. Haga clic con el botón derecho en el proyecto y agregue un nuevo elemento. Seleccione Tablas y vistas>Tabla y asígnelo el nombre Student.

En el archivo de tabla, reemplace el comando T-SQL por el código siguiente para crear la tabla.

CREATE TABLE [dbo].[Student] (
    [StudentID]      INT           IDENTITY (1, 1) NOT NULL,
    [LastName]       NVARCHAR (50) NULL,
    [FirstName]      NVARCHAR (50) NULL,
    [EnrollmentDate] DATETIME      NULL,
    PRIMARY KEY CLUSTERED ([StudentID] ASC)
)

Observe que la ventana de diseño se sincroniza automáticamente con el código. Puede trabajar con el código o el diseñador.

show code and design

Agregue otra tabla. Esta vez asígnelo el nombre Course y use el siguiente comando de T-SQL.

CREATE TABLE [dbo].[Course] (
    [CourseID] INT           IDENTITY (1, 1) NOT NULL,
    [Title]    NVARCHAR (50) NULL,
    [Credits]  INT           NULL,
    PRIMARY KEY CLUSTERED ([CourseID] ASC)
)

Y, repita una vez más para crear una tabla denominada Inscripción.

CREATE TABLE [dbo].[Enrollment] (
    [EnrollmentID] INT IDENTITY (1, 1) NOT NULL,
    [Grade]        DECIMAL(3, 2) NULL,
    [CourseID]     INT NOT NULL,
    [StudentID]    INT NOT NULL,
    PRIMARY KEY CLUSTERED ([EnrollmentID] ASC),
    CONSTRAINT [FK_dbo.Enrollment_dbo.Course_CourseID] FOREIGN KEY ([CourseID]) 
        REFERENCES [dbo].[Course] ([CourseID]) ON DELETE CASCADE,
    CONSTRAINT [FK_dbo.Enrollment_dbo.Student_StudentID] FOREIGN KEY ([StudentID]) 
        REFERENCES [dbo].[Student] ([StudentID]) ON DELETE CASCADE
)

Puede rellenar la base de datos con datos a través de un script que se ejecuta después de implementar la base de datos. Agregue un script posterior a la implementación al proyecto. Haga clic con el botón derecho en el proyecto y agregue un nuevo elemento. Seleccione Scripts de usuario>después de la implementación. Puede usar el nombre predeterminado.

Agregue el siguiente código T-SQL al script posterior a la implementación. Este script simplemente agrega datos a la base de datos cuando no se encuentra ningún registro coincidente. No sobrescribe ni elimina ningún dato que haya escrito en la base de datos.

MERGE INTO Course AS Target 
USING (VALUES 
        (1, 'Economics', 3), 
        (2, 'Literature', 3), 
        (3, 'Chemistry', 4)
) 
AS Source (CourseID, Title, Credits) 
ON Target.CourseID = Source.CourseID 
WHEN NOT MATCHED BY TARGET THEN 
INSERT (Title, Credits) 
VALUES (Title, Credits);

MERGE INTO Student AS Target
USING (VALUES 
        (1, 'Tibbetts', 'Donnie', '2013-09-01'), 
        (2, 'Guzman', 'Liza', '2012-01-13'), 
(3, 'Catlett', 'Phil', '2011-09-03')
)
AS Source (StudentID, LastName, FirstName, EnrollmentDate)
ON Target.StudentID = Source.StudentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (LastName, FirstName, EnrollmentDate)
VALUES (LastName, FirstName, EnrollmentDate);

MERGE INTO Enrollment AS Target
USING (VALUES 
(1, 2.00, 1, 1),
(2, 3.50, 1, 2),
(3, 4.00, 2, 3),
(4, 1.80, 2, 1),
(5, 3.20, 3, 1),
(6, 4.00, 3, 2)
)
AS Source (EnrollmentID, Grade, CourseID, StudentID)
ON Target.EnrollmentID = Source.EnrollmentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (Grade, CourseID, StudentID)
VALUES (Grade, CourseID, StudentID);

Es importante tener en cuenta que el script posterior a la implementación se ejecuta cada vez que implementa el proyecto de base de datos. Por lo tanto, debe tener en cuenta cuidadosamente sus requisitos al escribir este script. En algunos casos, es posible que desee empezar de nuevo a partir de un conjunto conocido de datos cada vez que se implemente el proyecto. En otros casos, es posible que no desee modificar los datos existentes de ninguna manera. En función de sus requisitos, puede decidir si necesita un script posterior a la implementación o lo que necesita incluir en el script. Para obtener más información sobre cómo rellenar la base de datos con un script posterior a la implementación, vea Incluir datos en un proyectode base de datos de SQL Server.

Ahora tiene 4 archivos de script SQL, pero no hay tablas reales. Está listo para implementar el proyecto de base de datos en localdb. En Visual Studio, haga clic en el botón Iniciar (o F5) para compilar e implementar el proyecto de base de datos. Compruebe la pestaña Salida para comprobar que la compilación y la implementación se han realizado correctamente.

Para ver que se ha creado la nueva base de datos, abra el Explorador de objetos de SQL Server y busque el nombre del proyecto en el servidor de base de datos local correcto (en este caso (localdb)\ProjectsV13).

Para ver que las tablas se rellenan con datos, haga clic con el botón derecho en una tabla y seleccione Ver datos.

show table data

Se muestra una vista editable de los datos de la tabla. Por ejemplo, si selecciona Tablas>dbo.course>Ver datos, verá una tabla con tres columnas (Curso, Título y Créditos) y cuatro filas.

Recursos adicionales

Para obtener un ejemplo introductorio del desarrollo de Code First, consulte Introducción a ASP.NET MVC 5. Para obtener un ejemplo más avanzado, consulte Creación de un modelo de datos de Entity Framework para una aplicación de ASP.NET MVC 4.

Para obtener instrucciones sobre cómo seleccionar qué enfoque de Entity Framework se va a usar, consulte Enfoques de desarrollode Entity Framework.

Pasos siguientes

En este tutorial ha:

  • Configuración de la base de datos

Pase al siguiente tutorial para aprender a crear los modelos de datos y la aplicación web.