Avatar ·

La forma más rápida de insertar registros en masa en Entity Framework

¡Hola a todos! Soy un desarrollador C# principiante y me he encontrado con un problema de rendimiento al insertar datos en masa a través de Entity Framework. Tengo una aplicación que recibe alrededor de 10 000 registros cada minuto desde una API externa y los guarda en una base de datos SQL Server.

Actualmente uso un bucle normal con Add() y SaveChanges() para cada registro, pero esto toma alrededor de 3-4 minutos, lo cual es crítico para mi aplicación. Aquí hay un ejemplo de mi código:

public void SaveRecords(List<MyEntity> records)
{
    using (var context = new MyDbContext())
    {
        foreach (var record in records)
        {
            context.MyEntities.Add(record);
            context.SaveChanges(); // Llamo por cada registro
        }
    }
}

He oído que hay formas más eficientes: usar AddRange(), procesamiento por lotes, Bulk Insert. Pero no estoy seguro de qué enfoque dará el máximo rendimiento. También me