Avatar ·

أسرع طريقة للإدراج الجماعي للسجلات في Entity Framework

مرحباً بالجميع! أنا مطور C# مبتدئ وقد واجهت مشكلة في الأداء عند إدراج البيانات بشكل جماعي عبر Entity Framework. لدي تطبيق يتلقى حوالي 10,000 سجل كل دقيقة من API خارجي ويحفظها في قاعدة بيانات SQL Server.

حالياً، أستخدم حلقة عادية مع Add() و SaveChanges() لكل سجل، لكن هذا يستغرق حوالي 3-4 دقائق، وهو أمر بالغ الأهمية لتطبيقي. إليك مثال على الكود الخاص بي:

public void SaveRecords(List<MyEntity> records)
{
    using (var context = new MyDbContext())
    {
        foreach (var record in records)
        {
            context.MyEntities.Add(record);
            context.SaveChanges(); // أستدعيه لكل سجل
        }
    }
}

لقد سمعت أن هناك طرقاً أكثر فعالية: استخدام AddRange()، المعالجة المجمعة (batch processing)، الإدراج الجماعي (Bulk Insert). لكنني لست متأكداً من أي نهج سيعطي أقصى أداء. كما أنني أفكر في تغيير