IRONSOFTWAREHOME
ACTUALIZACIONES PARA DESARROLLADORES

Entity Framework Core | ORM de .NET para acceso a bases de datos

Jacob Mellor, Chief Technology Officer @ Team Iron
Jacob Mellor
Updated: 23 de abril de 2026

En el ámbito del desarrollo de software moderno, la gestión eficiente de datos es crucial. Ya sea que estés construyendo una aplicación simple o un sistema empresarial complejo, acceder, manipular y guardar datos de manera efectiva es un requisito fundamental. Entity Framework Core (EF Core) en C# es una herramienta poderosa que simplifica el acceso a datos al proporcionar un enfoque conveniente y orientado a objetos para trabajar con bases de datos. En este artículo, nos adentraremos en el mundo de EF Core, explorando sus características, capacidades y mejores prácticas. Además, echaremos un vistazo a IronPDF para Manejar Documentos PDF de Soluciones de Iron Software para leer, escribir y gestionar documentos PDF. Crearemos un ejemplo práctico con ambos paquetes.

Entender Entity Framework Core

Entity Framework Core es una versión de código abierto, ligera y extensible de la popular tecnología de acceso a datos Entity Framework. Está diseñado para funcionar en múltiples plataformas, soportando varios proveedores de servidores de bases de datos existentes, incluyendo SQL Server, SQLite, MySQL, PostgreSQL, Azure Cosmos DB, y más. EF Core es un mapeador de bases de datos moderno que sigue el patrón ORM (Mapeo Objeto-Relacional), permitiendo a los desarrolladores trabajar con bases de datos utilizando objetos .NET, lo que elimina la necesidad de escribir consultas SQL tediosas manualmente.

Características principales de EF Core

  1. Modelado de Entidades: EF Core permite a los desarrolladores definir modelos de datos usando Objetos CLR Comunes Antiguos (POCOs). Estas clases de entidad representan tablas de bases de datos, con propiedades que se asignan a las columnas de la tabla.

  2. Soporte para LINQ: EF Core soporta sin problemas las consultas LINQ (Consulta Integrada en el Lenguaje), permitiendo a los desarrolladores escribir consultas fuertemente tipadas contra SQL Server o cualquier otra base de datos usando la sintaxis familiar de C#. Esto hace que las consultas sean intuitivas y reduce la probabilidad de errores en tiempo de ejecución. Además, se pueden usar sentencias SQL sin procesar junto con consultas LINQ.

  3. Migraciones de Bases de Datos: Gestionar cambios en el esquema de la base de datos puede ser un desafío, especialmente en un entorno de equipo. EF Core simplifica este proceso al proporcionar capacidades de migración de bases de datos, permitiendo a los desarrolladores aplicar cambios incrementales al esquema de la base de datos usando migraciones basadas en código.

  4. Carga Perezosa y Carga Ansiosa: EF Core soporta tanto estrategias de carga perezosa como de carga ansiosa, permitiendo a los desarrolladores optimizar el rendimiento cargando datos relacionados bajo demanda o de antemano, dependiendo del caso de uso.

  5. Gestión de Transacciones: Las transacciones aseguran consistencia e integridad de los datos durante operaciones en la base de datos. EF Core permite a los desarrolladores trabajar con transacciones explícitamente, asegurando que un grupo de operaciones en la base de datos tengan éxito o fallan juntas.

  6. Control de Concurrencia: EF Core proporciona soporte integrado para gestionar conflictos de concurrencia, permitiendo a los desarrolladores detectar y resolver conflictos que puedan surgir cuando múltiples usuarios intentan modificar los mismos datos simultáneamente.

Cómo empezar con EF Core

Vamos a crear un ejemplo básico usando SQLite con Entity Framework Core (EF Core) en una aplicación de ASP.NET Core. Aquí están los pasos:

  1. Crea tu aplicación:

    • Comienza creando una aplicación de Consola o ASP.NET.
  2. Instalar los paquetes necesarios:

    • Añade los siguientes paquetes NuGet a tu proyecto:

      • Microsoft.EntityFrameworkCore (versión 1.0.0 o posterior)
      • Microsoft.EntityFrameworkCore.Sqlite (versión 1.0.0 o posterior)
  3. Cree su contexto de base de datos:

    • Define una clase para tu contexto de base de datos (por ejemplo, DatabaseContext) que herede de DbContext.

    • En el método OnConfiguring, establece la cadena de conexión de SQLite:

      public class DatabaseContext : DbContext
      {
          protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
          {
              optionsBuilder.UseSqlite("Filename=sample.db");
          }
      }
      C#
  4. Registrar el contexto:

    • En tu clase Startup, añade tu contexto a los servicios:

      public void ConfigureServices(IServiceCollection services)
      {
          services.AddEntityFrameworkSqlite().AddDbContext<DatabaseContext>();
      }
      C#
  5. Cree la base de datos al iniciar:

    • En el constructor Startup, crea tu base de datos:

      public Startup(IHostingEnvironment env)
      {
          using (var client = new DatabaseContext())
          {
              client.Database.EnsureCreated();
          }
      }
      C#
  6. Utilice SQLite en su aplicación:

    • Ahora puedes usar SQLite en tu aplicación ASP.NET Core a través de EF Core.
    • Define tus modelos y utiliza el DatabaseContext para interactuar con la base de datos.

Recuerda que este es un ejemplo básico y hay otras formas de configurar la cadena de conexión y usar EF Core. ¡Siéntete libre de explorar más características avanzadas y adaptar esto a tus necesidades específicas!

Bestes prácticas para el desarrollo de EF Core

  1. Mantén DbContext Acotado: Las instancias de DbContext en EF Core están diseñadas para ser de corta duración y normalmente deberían estar acotadas al tiempo de vida de una única solicitud en aplicaciones web.

  2. Usa AsNoTracking para Operaciones de Solo Lectura: Al realizar operaciones de solo lectura donde no se espera que las entidades sean modificadas, usa el método AsNoTracking para mejorar el rendimiento al pasar por alto el seguimiento de cambios.

  3. Optimiza Consultas: Escribe consultas eficientes usando técnicas de indexación apropiada, paginación y filtrado para minimizar la cantidad de datos recuperados de la base de datos.

  4. Evita Problemas de Consulta N+1: Presta atención al problema de consulta N+1, donde una consulta se ejecuta por cada entidad relacionada en una colección. Usa carga ansiosa o carga explícita para obtener datos relacionados de manera eficiente.

  5. Monitorea el Rendimiento: Monitorea el rendimiento de EF Core usando herramientas como Entity Framework Profiler o las capacidades de registro integradas para identificar y abordar cuellos de botella de rendimiento.

Introducción a IronPDF

Entity Framework Core (Cómo Funciona Para Desarrolladores): Figura 1 - IronPDF

IronPDF es una poderosa biblioteca C# para PDF que te permite generar, editar y extraer contenido de documentos PDF en proyectos .NET. Aquí algunas características clave:

  1. Conversión de HTML a PDF:

    • Convierte contenido HTML, CSS y JavaScript a formato PDF.
    • Usa el Motor de Renderizado de Chrome para PDFs de alta precisión.
    • Genera PDFs desde URLs, archivos HTML o cadenas HTML.
  2. Conversión de imágenes y contenidos:

    • Convierte imágenes hacia y desde PDF.
    • Extrae texto e imágenes de PDFs existentes.
    • Soporte para varios formatos de imagen.
  3. Edición y manipulación:

    • Establece propiedades, seguridad y permisos para PDFs.
    • Añade firmas digitales.
    • Edita metadatos e historial de revisiones.
  4. Compatibilidad multiplataforma:

    • Funciona con .NET Core (8, 7, 6, 5 y 3.1+), .NET Standard (2.0+) y .NET Framework (4.6.2+).
    • Compatible con Windows, Linux y macOS.
    • Disponible en NuGet para una fácil instalación.

Generar un documento PDF utilizando IronPDF junto con EF Core

Para comenzar, crea una aplicación de consola usando Visual Studio como se muestra a continuación.

Entity Framework Core (Cómo Funciona Para Desarrolladores): Figura 2 - Nuevo Proyecto

Proveer Nombre del Proyecto.

Entity Framework Core (Cómo Funciona Para Desarrolladores): Figura 3 - Configuración del Proyecto

Proporciona versión multiplataforma de .NET.

Entity Framework Core (Cómo Funciona Para Desarrolladores): Figura 4 - Marco

Instala el paquete Microsoft.EntityFrameworkCore.

Entity Framework Core (Cómo Funciona Para Desarrolladores): Figura 5 - Paquete Microsoft.EntityFrameworkCore

Instala el paquete Microsoft.EntityFrameworkCore.SqlLite.

Entity Framework Core (Cómo Funciona Para Desarrolladores): Figura 6 - Paquete Microsoft.EntityFrameworkCore.SqlLite

Instala el paquete IronPDF.

Entity Framework Core (Cómo Funciona Para Desarrolladores): Figura 7 - IronPDF

Añade el siguiente código a Program.cs.

using IronPdf;
using Microsoft.EntityFrameworkCore;
using System;
using System.Linq;

namespace CodeSample
{
    public class Program
    {
        public static void Main()
        {
            Console.WriteLine("-------------Demo EF core and IronPDF--------------");
            
            // Disable local disk access or cross-origin requests
            Installation.EnableWebSecurity = true;
            
            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            
            // Start with initial HTML content
            var content = "<h1>Demo EF core and IronPDF</h1>";
            content += "<h2>Add Students</h2>";
            
            // Add Students to Database
            using (var client = new DatabaseContext())
            {
                client.Database.EnsureCreated(); // Create table if it doesn't exist
                client.Students.ExecuteDelete(); // Ensure the table is clean

                // Define students
                var students = new[]
                {
                    new Student { StudentName = "Bill", DateOfBirth = new DateTime(1990, 12, 01), Height = 5.45M, Weight = 56, Grade = 10 },
                    new Student { StudentName = "Mike", DateOfBirth = new DateTime(1992, 12, 06), Height = 4.45M, Weight = 34, Grade = 8 },
                    new Student { StudentName = "Peter", DateOfBirth = new DateTime(1990, 12, 03), Height = 5.0M, Weight = 50, Grade = 10 },
                    new Student { StudentName = "Bob", DateOfBirth = new DateTime(1990, 12, 09), Height = 4.56M, Weight = 56, Grade = 10 },
                    new Student { StudentName = "Harry", DateOfBirth = new DateTime(1990, 12, 21), Height = 5.6M, Weight = 56, Grade = 10 },
                    new Student { StudentName = "Charle", DateOfBirth = new DateTime(1993, 12, 11), Height = 5.5M, Weight = 56, Grade = 7 }
                };

                // Add students to database
                client.Students.AddRange(students);
                client.SaveChanges();

                // Add students info to HTML content
                foreach (var student in students)
                {
                    content = AddStudent(content, student);
                }
            }

            content += "<h2>Display Students in Database</h2>";
            
            // Display Students in Database
            using (var client = new DatabaseContext())
            {
                Console.WriteLine($"Displaying Students in Database:");
                var students = client.Students.ToList();
                
                foreach (var student in students)
                {
                    Console.WriteLine($"Name= {student.StudentName}, ID={student.StudentID}, Grade={student.Grade}, Weight={student.Weight}, Height={student.Height}");
                    content = AddStudent(content, student);
                }
            }           
            
            // Render HTML content to PDF
            var pdf = renderer.RenderHtmlAsPdf(content);
            
            // Export to a file or stream
            pdf.SaveAs("AwesomeEfCoreAndIronPdf.pdf");
        }

        // Helper method to add student info as HTML content
        private static string AddStudent(string content, Student student)
        {
            content += $"<p Name = {student.StudentName}, ID={student.StudentID}, Grade={student.Grade}, Weight={student.Weight}, Height={student.Height}</p>";
            return content;
        }
    }
    
    public class DatabaseContext : DbContext
    {
        public DbSet<Student> Students { get; set; }
        
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlite("Filename=IronPdfDemo.db");
        }        
    }
    
    public class Student
    {
        public int StudentID { get; set; }
        public string StudentName { get; set; }
        public DateTime? DateOfBirth { get; set; }
        public decimal Height { get; set; }
        public float Weight { get; set; }
        public int Grade { get; set; }
    }
}
C#

Explicación del código

  1. Configuración del Renderizador y Contenido:

    • El código comienza creando una cadena de contenido HTML con un encabezado (<h1>) y un subencabezado (<h2>) para añadir estudiantes a la base de datos.
    • El objetivo es generar un documento PDF usando IronPDF, que incluirá información sobre los estudiantes.
  2. Contexto de Base de Datos y Adición de Estudiantes:

    • La clase DatabaseContext se utiliza para interactuar con la base de datos.
    • client.Database.EnsureCreated(); asegura que la base de datos y la tabla existan.
    • client.Students.ExecuteDelete(); limpia cualquier dato existente de la tabla Students.
    • Se definen y añaden estudiantes a la base de datos. Las propiedades incluyen StudentName, DateOfBirth, Height, Weight y Grade.
    • client.SaveChanges(); guarda los cambios en la base de datos.
  3. Mostrando Estudiantes:

    • El código recupera a todos los estudiantes usando client.Students.ToList();.
    • Para cada estudiante, imprime su nombre, ID, grado, peso y altura y añade esta información al contenido HTML.
  4. Rendering to PDF:

    • Se instancia el ChromePdfRenderer.
    • El contenido HTML se renderiza en un PDF usando renderer.RenderHtmlAsPdf(content).
  • Finalmente, el PDF se guarda como "AwesomeEfCoreAnd IronPDF.pdf".

Producción

Entity Framework Core (Cómo Funciona Para Desarrolladores): Figura 8 - Salida de Consola

PDF

Entity Framework Core (Cómo Funciona Para Desarrolladores): Figura 9 - Salida PDF

Licencias de IronPDF

El paquete IronPDF requiere una licencia para ejecutar y generar el PDF. Agrega el siguiente código al inicio de la aplicación antes de que se acceda al paquete.

IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY";

Una licencia de prueba está disponible en la Página de Licencias de IronPDF.

Conclusión

Entity Framework Core en C# proporciona una forma robusta e intuitiva de interactuar con bases de datos, ofreciendo características como soporte para LINQ, migraciones de bases de datos, y gestión de transacciones de fábrica. Al seguir mejores prácticas y aprovechar sus capacidades, los desarrolladores pueden construir aplicaciones escalables y fáciles de mantener con facilidad. Ya seas un desarrollador experimentado o estés empezando, EF Core es una herramienta valiosa para tener en tu arsenal para el acceso moderno a datos en aplicaciones C#. Por otro lado, IronPDF es una biblioteca .NET para crear, manipular y renderizar documentos PDF dentro de tus aplicaciones. Puedes usarla junto con EF Core para convertir contenido HTML (incluyendo imágenes) en un archivo PDF.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor is Chief Technology Officer at Iron Software and a visionary engineer pioneering C# PDF technology. As the original developer behind Iron Software's core codebase, he has shaped the company's product architecture since its inception, transforming it alongside CEO Cameron Rimington into a 50+ person company serving NASA, Tesla, and global government agencies.

...
Read More

Related Articles

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuenta
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge related to IronPDF Product Demo

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta