Introducción
Entity Framework Core (EF Core) es un marco de trabajo de acceso a datos ORM (Object-Relational Mapping) de código abierto para .NET. Permite a los desarrolladores modelar sus datos en objetos de C# y acceder a ellos de forma transparente a través de una base de datos relacional.
¿Qué es un ORM?
Un ORM es un marco de trabajo que proporciona una capa de abstracción entre los objetos de programación y la base de datos subyacente. Esto significa que los desarrolladores pueden trabajar con sus datos en objetos de C#, sin tener que preocuparse por los detalles de la base de datos subyacente.
¿Cuáles son los beneficios de usar EF Core?
EF Core ofrece una serie de beneficios, entre los que se incluyen:
- Productividad: EF Core puede ayudar a los desarrolladores a ser más productivos al proporcionar una capa de abstracción para el acceso a datos.
- Reutilización: EF Core facilita la reutilización del código de acceso a datos.
- Escalabilidad: EF Core es escalable y puede manejar grandes cantidades de datos.
¿Cómo empezar a usar EF Core?
Para empezar a usar EF Core, primero debe crear un proyecto de .NET Core. A continuación, debe agregar el paquete NuGet “Microsoft.EntityFrameworkCore” a su proyecto.
Una vez que haya instalado el paquete NuGet, puede comenzar a crear sus modelos de datos. Los modelos de datos son clases de C# que representan las tablas de su base de datos.
Para crear un modelo de datos, debe crear una clase que herede de la clase DbContext
. La clase DbContext
proporciona una serie de métodos que puede usar para interactuar con su base de datos.
Ejemplo de modelo de datos
El siguiente es un ejemplo de un modelo de datos simple:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
}
Este modelo de datos representa una tabla de base de datos llamada “Productos”. La tabla “Productos” tiene tres columnas:
- Id: una clave principal
- Nombre: el nombre del producto
- Precio: el precio del producto
Acceso a datos con EF Core
Una vez que haya creado sus modelos de datos, puede comenzar a acceder a los datos de su base de datos.
Para acceder a los datos, puede usar los métodos proporcionados por la clase DbContext
.
Por ejemplo, el siguiente código muestra cómo obtener todos los productos de la base de datos:
var products = context.Products.ToList();
Este código devuelve una lista de objetos Product
que representan todos los productos de la base de datos.
Relaciones
Las relaciones son una parte importante de los modelos de datos. Las relaciones permiten a los desarrolladores modelar la forma en que los datos están relacionados entre sí.
EF Core proporciona una serie de tipos de relaciones, entre los que se incluyen:
- Relaciones uno a uno
- Relaciones uno a muchos
- Relaciones muchos a muchos
Ejemplo de relación uno a uno
El siguiente es un ejemplo de una relación uno a uno:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public Address Address { get; set; }
}
public class Address
{
public int Id { get; set; }
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
}
Este modelo de datos representa dos tablas de base de datos:
- “Clientes”: contiene la información del cliente
- “Direcciones”: contiene la información de la dirección del cliente
La relación entre las dos tablas es uno a uno. Esto significa que cada cliente tiene una dirección única, y cada dirección pertenece a un único cliente.
Para definir una relación uno a uno, debe usar el atributo HasOne()
en la clase de la tabla de la relación uno.
En este caso, debe usar el atributo HasOne()
en la clase Customer
para definir la relación con la tabla Address
.
Conclusión
EF Core es un marco de trabajo de acceso a datos potente y flexible que puede ayudar a los desarrolladores a ser más productivos
https://andresledo.es/csharp/entity-framework-core/
https://www.tutorialspoint.com/entity_framework/index.htm
https://www.entityframeworktutorial.net/efcore/entity-framework-core.aspx