Explore los diferentes enfoques para las entidades modelo en Entity Framework

Entity Framework simplifica el acceso a los datos en su aplicación al permitirle escribir código para realizar operaciones CRUD (Crear, Leer, Actualizar y Eliminar) sin la necesidad de interactuar directamente con el proveedor de la base de datos subyacente. Hay tres enfoques para modelar sus entidades en Entity Framework: Code First, Model First y Database First. Este artículo analiza estos tres enfoques y sus pros y contras.

¿Qué es Entity Framework? ¿Por qué tanto bombo?

Entity Framework de Microsoft es un ORM extendido que le ayuda a aislar el modelo de objetos de su aplicación del modelo de datos. Es un marco ORM de código abierto para ADO.Net y se incluye como parte de .Net Framework. Al utilizar herramientas ORM, puede centrarse en la lógica empresarial de la aplicación y almacenar datos en la base de datos con mucho menos código. Puede aprovechar un ORM para convertir datos entre sistemas de tipos incompatibles: puede almacenar los objetos de su dominio en la base de datos subyacente sin tener que preocuparse por las complejidades internas sobre cómo se almacenan realmente los datos. Entity Framework es un ORM maduro de Microsoft y se puede utilizar con una amplia variedad de bases de datos.

En las secciones que siguen, exploraremos cada uno de los tres enfoques para modelar entidades usando Entity Framework.

Código primero

El enfoque Code First le ayuda a crear las entidades en su aplicación centrándose en los requisitos del dominio. En esencia, puede seguir el diseño controlado por dominio (DDD) utilizando este enfoque. Una vez que se han definido sus entidades y se han especificado las configuraciones, puede crear la base de datos sobre la marcha utilizando ambos. El enfoque Code First le brinda más control sobre su código; ya no necesita trabajar con código generado automáticamente. Me gusta este enfoque porque te da mucha flexibilidad y control. Si tiene las clases de dominio listas, siempre preferiría este enfoque, ya que puede crear fácilmente su base de datos a partir de las clases de dominio.

La desventaja de este enfoque es que se perderían los cambios en el esquema de la base de datos subyacente; en este enfoque, su código define y crea la base de datos. El enfoque Code First le permite utilizar Entity Framework y definir el modelo de entidad sin el diseñador o los archivos XML. Puede utilizar el enfoque POCO (Plain Old CLR Objects) para definir el modelo y generar su base de datos.

En este enfoque, normalmente crearía las clases de entidad. He aquí un ejemplo; una clase de entidad típica se da a continuación.

 public class Product

   {

      public int ProductId { get; set; }

      public string ProductName { get; set; }

      public float Price { get; set; }

   }

A continuación, debe definir un contexto de datos personalizado extendiendo la clase DbContext como se muestra a continuación.

public class Context : DbContext

   {

      public DbSet Products { get; set; }

   }

Por último, debe especificar la cadena de conexión en el archivo de configuración. ¡Estás listo!

Base de datos primero

Puede utilizar el enfoque Database First si la base de datos ya está diseñada y lista. En este enfoque, el modelo de datos de entidad (EDM) se crea a partir de la base de datos subyacente. Como ejemplo, usa el primer enfoque de la base de datos cuando genera los archivos edmx en el IDE de Visual Studio a partir de la base de datos. Los cambios manuales en la base de datos son posibles fácilmente y siempre puede actualizar el EDM si es necesario (por ejemplo, si cambia el esquema de la base de datos subyacente). Para hacer esto, simplemente actualice el EDM desde la base de datos en el IDE de Visual Studio.

Modelo primero

En el enfoque Model First, puede crear primero el EDM y luego generar la base de datos a partir de él. Normalmente, crearía un EDM vacío con el Asistente de modelo de datos de entidad en Visual Studio, definiría las entidades y sus relaciones en Visual Studio y luego generaría la base de datos a partir de este modelo definido. Puede crear entidades fácilmente y definir sus relaciones y asociaciones en el diseñador de Visual Studio. También puede especificar la propiedad Clave y los tipos de datos para las propiedades de sus entidades utilizando el diseñador. Puede usar clases parciales para implementar características adicionales en sus entidades.

Bien, pero ¿cuándo debería utilizar el enfoque Model First? Bueno, si ni las clases de dominio ni la base de datos están listas y prefiere definir el modelo de datos con un diseñador visual, este enfoque es para usted. Sin embargo, al igual que en el enfoque Code First, en el enfoque Model First los cambios manuales en la base de datos se perderían cuando el modelo define la base de datos.