Translate

lunes, 7 de junio de 2021

Introducción a Entity Framework Core 5


Entity Framework es un mapeador relacional de objetos (ORM), que ayuda a los desarrolladores a superar los desajustes de impedancia entre C # y el esquema de una instancia de base de datos.

Entity Framework ha recorrido un largo camino desde su inicio original. Concebida inicialmente como una herramienta centrada en el diseñador que depende en gran medida de la interfaz gráfica de usuario de Visual Studio y SQL Server, la filosofía actual de EF reconoce la necesidad de ser más amigable con ideas como control de fuente distribuido, servidores de compilación, múltiples motores de base de datos y sistemas operativos.

Entity Framework (EF) Core es una versión ligera, extensible, de código abierto y multiplataforma de la popular tecnología de acceso a datos de Entity Framework.

EF Core puede servir como un mapeador relacional de objetos (ORM), que:

  • Permite a los desarrolladores de .NET trabajar con una base de datos utilizando objetos .NET.
  • Elimina la necesidad de la mayor parte del código de acceso a datos que normalmente es necesario escribir.
  • EF Core admite muchos motores de base de datos; consulte Proveedores de bases de datos para obtener más detalles.

Con EF Core, el acceso a los datos se realiza mediante un modelo. Un modelo se compone de clases de entidad y un objeto de contexto que representa una sesión con la base de datos. El objeto de contexto permite consultar y guardar datos. 

EF admite los siguientes enfoques de desarrollo de modelos:
  • Genere un modelo a partir de una base de datos existente.
  • Codifique manualmente un modelo para que coincida con la base de datos.
  • Una vez que se crea un modelo, use EF Migrations para crear una base de datos a partir del modelo. Las migraciones permiten evolucionar la base de datos a medida que cambia el modelo.

Si bien EF Core es bueno para abstraer muchos detalles de programación, existen algunas mejores prácticas aplicables a cualquier ORM que ayudan a evitar errores comunes en las aplicaciones de producción:

  • El conocimiento de nivel intermedio o superior del servidor de base de datos subyacente es esencial para diseñar, depurar, perfilar y migrar datos en aplicaciones de producción de alto rendimiento. Por ejemplo, conocimiento de claves primarias y externas, restricciones, índices, normalización, declaraciones DML y DDL, tipos de datos, creación de perfiles, etc.
  • Pruebas funcionales y de integración: es importante replicar el entorno de producción lo más fielmente posible para:
    • Encontrar problemas en la aplicación que solo aparecen cuando se usa una versión o edición específica del servidor de base de datos.
    • Detectar los cambios importantes al actualizar EF Core y otras dependencias. Por ejemplo, agregar o actualizar marcos como ASP.NET Core, OData o AutoMapper. Estas dependencias pueden afectar EF Core de formas inesperadas.
    • Prueba de rendimiento y estrés con cargas representativas. El uso ingenuo de algunas funciones no se adapta bien. Por ejemplo, múltiples colecciones Incluye, uso intensivo de carga diferida, consultas condicionales en columnas no indexadas, actualizaciones masivas e inserciones con valores generados por la tienda, falta de manejo de simultaneidad, modelos grandes, política de caché inadecuada.
    • Revisión de seguridad: por ejemplo, manejo de cadenas de conexión y otros secretos, permisos de base de datos para operaciones sin implementación, validación de entrada para SQL sin procesar, cifrado para datos confidenciales.
    • Asegurarse de que el registro y los diagnósticos sean suficientes y utilizables. Por ejemplo, la configuración de registro adecuada, las etiquetas de consulta y Application Insights.
    • Encontrar error de recuperación. Prepare contingencias para escenarios de fallas comunes, como reversión de versiones, servidores de reserva, escalado horizontal y equilibrio de carga, mitigación de DoS y copias de seguridad de datos.
    • Despliegue y migración de aplicaciones. Planifique cómo se aplicarán las migraciones durante la implementación; hacerlo al inicio de la aplicación puede sufrir problemas de concurrencia y requiere permisos más altos de los necesarios para el funcionamiento normal. Utilice la preparación para facilitar la recuperación de errores fatales durante la migración. Para obtener más información, consulte Aplicación de migraciones.
    • Tests detalladas de las migraciones generadas. Las migraciones deben probarse a fondo antes de aplicarse a los datos de producción. La forma del esquema y los tipos de columna no se pueden cambiar fácilmente una vez que las tablas contienen datos de producción. Por ejemplo, en SQL Server, nvarchar (max) y decimal (18, 2) rara vez son los mejores tipos para columnas asignadas a propiedades de cadena y decimal, pero esos son los valores predeterminados que utiliza EF porque no tiene conocimiento de su guión.

Dejo link: https://docs.microsoft.com/en-us/ef/core/