Si estás buscando cómo relacionar tablas en EF Core con SQL Server, este artículo es para ti. Aquí aprenderás paso a paso a definir claves foráneas, insertar datos relacionados y consultarlos eficientemente usando ..Include()
En el artículo anterior, aprendiste cómo insertar múltiples registros de forma eficiente con BulkInsert en una aplicación de consola utilizando EF Core y SQL Server.
Ahora vamos un paso más allá: aprenderás a relacionar tablas en Entity Framework Core con SQL Server, definir claves foráneas y consultar datos conectados.
→ Puedes ver este ejemplo en vivo en .NET Fiddle para probar el código.
🔗 Relaciones uno a muchos en EF Core y SQL Server
Una relación 1:N (uno a muchos) significa que una entidad puede estar asociada a múltiples registros de otra entidad. Por ejemplo:
- Una categoría puede contener muchos productos
- Cada producto pertenece a una sola categoría
EF Core representa esta relación con propiedades de navegación y claves foráneas, respetando las convenciones de C#.
📋 Entidades relacionadas en EF Core y SQL Server
Para representar una relación uno a muchos en EF Core y SQL Server, definimos dos clases: y . Cada producto tiene una clave foránea que lo asocia con una categoría, y la categoría contiene una lista de productos. EF Core puede inferir esta relación automáticamente gracias a sus convenciones.Categoria
Producto

⚙️ Configuración de DbContext con SQL Server
El siguiente fragmento muestra cómo configurar el contexto de EF Core para trabajar con SQL Server. En este ejemplo, el método establece la cadena de conexión y define las entidades que forman parte del modelo.OnConfiguring()

Para propósitos de prueba, puedes crear la base de datos automáticamente con:
context.Database.EnsureCreated();
Esto evita usar migraciones y es perfecto para prototipos rápidos.
📥 Insertar y consultar relaciones en EF Core con SQL Server usando .Include()
Una vez configurado el contexto y definidas las entidades, el siguiente paso es insertar datos relacionados y luego consultarlos juntos. Esto se logra con el método , que se conoce como carga ansiosa (eager loading). Permite obtener datos relacionados en una sola consulta—por ejemplo, obtener todas las categorías e incluir sus productos relacionados.Include

🔍 Beneficios de usar .Include()
en EF Core con SQL Server.
EF Core no carga automáticamente las entidades relacionadas al hacer una consulta. Si omites .Include()
, obtendrás los productos sin su categoría asociada, o viceversa.
Usar .Include()
es esencial cuando necesitas mostrar datos relacionados en una interfaz o realizar cálculos entre tablas.
⚠️ Errores comunes al definir relaciones en EF Core con SQL Server
- ❌ Olvidar la clave foránea () en la clase .
CategoriaId
Producto
- ❌ No usar
. Include()
al consultar. - ❌ Aplicar
SaveChanges()
antes de establecer la relación.
✅ Conclusión sobre relaciones en EF Core con SQL Server
- Aprendiste a establecer una relación uno a muchos en EF Core con SQL Server
- Configuraste para trabajar con SQL Server
DbContext
- Consultaste datos relacionados usando
.Include()
- Identificaste errores comunes y cómo evitarlos
Al principio puede parecer complejo, pero con práctica se vuelve muy natural.
📌 ¿Qué sigue después de relacionar tablas en EF Core?
Ahora que sabes cómo conectar tus entidades, el siguiente paso es aprender a filtrar eficientemente grandes volúmenes de datos relacionados. Aquí es donde entra en juego , una extensión de alto rendimiento para aplicar filtros desde listas.WhereBulkContains()

WhereBulkContains
, utilizado para filtrar eficientemente registros desde listas en EF Core.WhereBulkContains()
👉 Ver más sobre WhereBulkContains()
📚 Recursos útiles sobre EF Core y SQL Server
¿Te fue útil? Guarda este artículo, compártelo y síguenos para más optimizaciones con EF Core.