0

Entity Framework 7 Preview 4

Por último, Entity Framework, también tiene una nueva versión previa. Se han hecho muchas correcciones de erroes, pero el foco principal de esta versión está relacionado con Domain Driven Design. Veamos:

Que necesitas para probar esta versión

  • EF7 actualmente apunta a .NET 6. Es probable que esto se actualice a .NET 7 a medida que nos acerquemos al lanzamiento.
  • EF7 no se ejecutará en .NET Framework.

EF7 es el sucesor de EF Core 6.0, no debe confundirse con EF6. Si está considerando actualizar desde EF6, lea nuestra guía para port from EF6 to EF Core.

EF7 se distribuye como un conjunto de paquetes NuGet. Por ejemplo, para agregar el proveedor de SQL Server a su proyecto, puede usar el siguiente comando con la herramienta dotnet:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer --version 7.0.0-preview.4.22229.2

Domain-driven design and “guarded” keys

Un patrón del diseño basado en dominios (DDD) es el concepto de usar objetos de valor como claves. En otras palabras, en lugar de declarar una clave como esta:

public class Thing
{
  public int Id { get; set; }
}

Podría verse así en su lugar:

public class Thing
{
  public ThingKey Id { get; set; }
}

public class ThingKey
{
  public ThingKey(Func<int> generator) => Id = generator();  
  public ThingKey(int id) => Id = id;
  public int Id { get; private set; }
}

Hay varias ventajas al hacer esto. La primera y quizás la más obvia es que oculta los detalles de implementación de la clave. Si preferimos consumir el recurso ilimitado de GUID en lugar del conjunto secuencial más limitado de enteros disponibles, nuestra refactorización será mucho más fácil gracias al búfer que proporciona la clase clave. 

También podemos proteger la clave de datos incorrectos con validaciones para que nadie asigne accidentalmente un valor negativo. ¿Alguna vez ha pasado la identificación incorrecta a un método que toma una clave? Al compilador no le importa porque todo son enteros… o bytes… o 1 y 0… pero si estás usando claves fuertemente tipiadas, nos veremos obligados a proporcionar la clave. De lo contrario, el compilador dará error.

Si usamos o no este enfoque, antes de la versión preliminar 4, la elección estaba limitada en EF Core. La forma más obvia de traducir de una entidad a un escalar es usar un convertidor, pero EF Core generaría una excepción si intentamos asignar un convertidor a una propiedad marcada para la generación de valor. Esa restricción se eliminó y se actualizó el código para garantizar que este caso se maneje por nosotros.

Conclusión

Solo tenemos una novedad en esta versión. Algo que llamó la atención es que se está ablandando el nombre de CORE. En futuras preview veremos seguramente una gran cantidad de novedades.

Fernando Sonego

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *