Información sobre EF Core
Entity Framework Core (EF Core) es un asignador relacional de objetos (ORM). Un ORM proporciona una capa entre el modelo de dominio que se implementa en el código y una base de datos. EF Core es una API de acceso a datos que permite interactuar con la base de datos mediante objetos de Common Runtime Language (CLR) antiguos sin formato (POCO) de .NET y sintaxis de Language Integrated Query (LINQ) fuertemente tipada.
En EF Core, la base de datos se abstrae detrás de los POCO de .NET. EF Core controla la interacción directa con la base de datos subyacente. Al usar esta API, puede dedicar menos tiempo a traducir solicitudes a y desde la base de datos y escribir SQL, y más tiempo a centrarse en la lógica de negocios importante.
Con EF Core, puede hacer lo siguiente:
- Cargar datos como objetos (entidades) de C#.
- Agregar, modificar y eliminar datos llamando a métodos en las entidades.
- Asignar varias tablas de base de datos a una sola entidad de C#.
- Controlar los problemas de simultaneidad que surgen cuando varios usuarios intentan actualizar simultáneamente el mismo registro.
- Use la sintaxis LINQ (System.Linq) para consultar la base de datos.
- Acceder a varias bases de datos, como SQL Server, SQLite, Azure Cosmos DB, PostgreSQL, MySQL, etc.
- Compilar el modelo de dominio a partir de una base de datos existente.
- Administrar el esquema de base de datos en función del modelo de dominio.
- Confirmar los cambios en gráficos de objetos complejos, profundos o anchos de entidades relacionadas con una sola llamada de método.
Revisión de la arquitectura de EF Core
En el diagrama siguiente se muestra la arquitectura de EF Core:
DbContext es una clase especial que representa una unidad de trabajo. DbContext
proporciona métodos para configurar opciones, cadenas de conexión, registros y el modelo usado para asignar el dominio a la base de datos.
Clases que derivan de DbContext
:
- Representan una sesión activa con la base de datos.
- Guardan y consultan instancias de entidades.
- Incluyen propiedades de tipo
DbSet<T>
que representan tablas en la base de datos.
El proveedor de EF Core traduce los cambios de gráfico de objeto a código SQL.
El proveedor de base de datos:
- Es una biblioteca de complementos que se ha diseñado para un motor de base de datos específico, como SQL Server, Azure Cosmos DB o PostgreSQL.
- Traduce las llamadas de método y las consultas LINQ al dialecto SQL nativo de la base de datos.
- Amplía EF Core para habilitar una funcionalidad que es única para el motor de base de datos.
Administración de esquemas de base de datos
EF Core proporciona dos métodos principales para mantener sincronizados el esquema de la base de datos y el modelo de EF Core:
- Migraciones (modelo como origen de confianza)
- Técnicas de ingeniería inversa (base de datos como origen de confianza)
Para elegir entre estas opciones, decida si es el modelo de EF Core o el esquema de la base de datos es el origen de confianza.
Migraciones
En los proyectos del mundo real, los modelos de datos cambian a medida que se implementan las características de la aplicación. A medida que se agregan y quitan nuevas entidades, los esquemas de base de datos deben cambiarse en consecuencia. La característica de migraciones de EF Core proporciona una manera de actualizar incrementalmente el esquema de la base de datos para mantenerla sincronizada con el modelo de datos de la aplicación al tiempo que se conservan los datos existentes en la base de datos.
Cuando se introduce un cambio en el modelo de datos, el desarrollador usa las herramientas de EF Core para agregar una migración correspondiente. EF Core compara el modelo actual con una instantánea del modelo anterior para determinar las diferencias. Se genera código de C# para implementar los cambios. Puede modificar los archivos de C# para comportamientos personalizados o para inicializar datos. Se realiza un seguimiento de los archivos en el control de código fuente del proyecto como cualquier otro archivo de código fuente.
Una vez que se ha generado una migración nueva, se puede aplicar a una base de datos de varias maneras. EF Core registra todas las migraciones aplicadas en una tabla de historial especial. La tabla de historial mantiene un registro de las migraciones que se han aplicado.
Ingeniería inversa
Las técnicas de ingeniería inversa constituyen el proceso de scaffolding de clases de modelo de entidad y una clase DbContext
basada en un esquema de base de datos. Este enfoque se suele usar con bases de datos existentes o compartidas administradas por un administrador de base de datos.
En la siguiente unidad, empezaremos a trabajar con EF Core mediante una migración.