Entity Framework: primer enfoque del modelo

En este capítulo, aprendamos cómo crear un modelo de datos de entidad en el diseñador utilizando el flujo de trabajo denominado Model First.

  • Model First es ideal para cuando está iniciando un nuevo proyecto donde la base de datos ni siquiera existe todavía.

  • El modelo se almacena en un archivo EDMX y se puede ver y editar en Entity Framework Designer.

  • En Model First, usted define su modelo en un diseñador de Entity Framework, luego genera SQL, que creará un esquema de base de datos para que coincida con su modelo y luego ejecuta SQL para crear el esquema en su base de datos.

  • Las clases con las que interactúa en su aplicación se generan automáticamente a partir del archivo EDMX.

A continuación, se muestra un ejemplo simple de cómo crear un nuevo proyecto de consola utilizando el enfoque Model First.

Step 1 - Abra Visual Studio y seleccione Archivo → Nuevo → Proyecto

Step 2 - Seleccione Instalado → Plantillas → Visual C # → Windows en el panel izquierdo y luego, en el panel central, seleccione Aplicación de consola.

Step 3 - Ingrese EFModelFirstDemo en el campo Nombre.

Step 4 - Para crear un modelo, primero haga clic con el botón derecho en el proyecto de su consola en el explorador de soluciones y seleccione Agregar → Nuevos elementos ...

Se abrirá el siguiente cuadro de diálogo.

Step 5 - Seleccione ADO.NET Entity Data Model en el panel central e ingrese el nombre ModelFirstDemoDB en el campo Nombre.

Step 6 - Haga clic en el botón Agregar, que abrirá el cuadro de diálogo Asistente de modelo de datos de entidad.

Step 7- Seleccione el modelo Empty EF Designer y haga clic en el botón Siguiente. Entity Framework Designer se abre con un modelo en blanco. Ahora podemos comenzar a agregar entidades, propiedades y asociaciones al modelo.

Step 8- Haga clic con el botón derecho en la superficie de diseño y seleccione Propiedades. En la ventana Propiedades, cambie el Nombre del contenedor de la entidad a ModelFirstDemoDBContext.

Step 9 - Haga clic con el botón derecho en la superficie de diseño y seleccione Agregar nuevo → Entidad ...

El cuadro de diálogo Agregar entidad se abrirá como se muestra en la siguiente imagen.

Step 10 - Ingrese Estudiante como nombre de entidad e Id. De estudiante como nombre de propiedad y haga clic en Aceptar.

Step 11 - Haga clic con el botón derecho en la nueva entidad en la superficie de diseño y seleccione Agregar nuevo → Propiedad escalar, ingrese Nombre como el nombre de la propiedad.

Step 12 - Ingrese FirstName y luego agregue otras dos propiedades escalares como LastName y EnrollmentDate.

Step 13 - Agregue dos cursos e inscripción de entidades más siguiendo todos los pasos mencionados anteriormente y también agregue algunas propiedades escalares como se muestra en los siguientes pasos.

Step 14 - Tenemos tres entidades en Visual Designer, agreguemos alguna asociación o relación entre ellas.

Step 15 - Haga clic con el botón derecho en la superficie de diseño y seleccione Agregar nuevo → Asociación ...

Step 16 - Haga que un extremo de la relación apunte al Estudiante con una multiplicidad de uno y el otro extremo a la Inscripción con una multiplicidad de muchos.

Step 17 - Esto significa que un estudiante tiene muchas inscripciones y la inscripción pertenece a un estudiante.

Step 18 - Asegúrese de que la casilla Agregar propiedades de clave externa a la entidad 'Publicar' esté marcada y haga clic en Aceptar.

Step 19 - Del mismo modo, agregue una asociación más entre el curso y la inscripción.

Step 20 - Su modelo de datos se verá como la siguiente pantalla después de agregar asociaciones entre entidades.

Ahora tenemos un modelo simple desde el que podemos generar una base de datos y usarlo para leer y escribir datos. Sigamos adelante y generemos la base de datos.

Step 1 - Haga clic con el botón derecho en la superficie de diseño y seleccione Generar base de datos a partir del modelo ...

Step 2 - Puede seleccionar una base de datos existente o crear una nueva conexión haciendo clic en Nueva conexión ...

Step 3 - Para crear una nueva base de datos, haga clic en Nueva conexión ...

Step 4 - Ingrese el nombre del servidor y el nombre de la base de datos.

Step 5 - Haga clic en Siguiente.

Step 6- Haga clic en Finalizar. Esto agregará el archivo * .edmx.sql en el proyecto. Puede ejecutar scripts DDL en Visual Studio abriendo el archivo .sql, luego haga clic con el botón derecho y seleccione Ejecutar.

Step 7 - Se mostrará el siguiente cuadro de diálogo para conectarse a la base de datos.

Step 8 - Tras una ejecución exitosa, verá el siguiente mensaje.

Step 9 - Vaya al explorador del servidor, verá que la base de datos se crea con tres tablas que se especifican.

A continuación, debemos intercambiar nuestro modelo para generar código que utilice la API DbContext.

Step 1 - Haga clic con el botón derecho en un lugar vacío de su modelo en EF Designer y seleccione Agregar elemento de generación de código ...

Verá que se abre el siguiente cuadro de diálogo Agregar nuevo elemento.

Step 2 - Seleccione EF 6.x DbContext Generator en el panel central e ingrese ModelFirstDemoModel en el campo Nombre.

Step 3 - Verá en el explorador de soluciones que se generan las plantillas ModelFirstDemoModel.Context.tt y ModelFirstDemoModel.tt.

El ModelFirstDemodel.Context genera el DbCcontext y los conjuntos de objetos que puede devolver y usar para realizar consultas, por ejemplo, para el contexto, estudiantes y cursos, etc.

La otra plantilla se ocupa de todos los tipos Alumno, Cursos, etc. A continuación se muestra la clase Alumno, que se genera automáticamente a partir del Modelo de entidad.

A continuación se muestra el código C # en el que se ingresan y recuperan algunos datos de la base de datos.

using System;
using System.Linq;

namespace EFModelFirstDemo {

   class Program {

      static void Main(string[] args) {

         using (var db = new ModelFirstDemoDBContext()) {

            // Create and save a new Student

            Console.Write("Enter a name for a new Student: ");
            var firstName = Console.ReadLine();

            var student = new Student {
               StudentID = 1,
               FirstName = firstName
            };
				
            db.Students.Add(student);
            db.SaveChanges();
				
            var query = from b in db.Students
               orderby b.FirstName select b;

            Console.WriteLine("All student in the database:");

            foreach (var item in query) {
               Console.WriteLine(item.FirstName);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
         }
      }
   }
}

Cuando se ejecuta el código anterior, recibirá el siguiente resultado:

Enter a name for a new Student:
Ali Khan
All student in the database:
Ali Khan
Press any key to exit...

Le recomendamos que ejecute el ejemplo anterior paso a paso para una mejor comprensión.