Massen einfügen mit EntityFramework-Plus

entity-framework entity-framework-extensions entity-framework-plus

Frage

Ich plante, EntityFramework-Plus für Massenoperationen zu verwenden, aber ich bin nicht sicher, ob es Masseneinfügung unterstützt.

So zum Beispiel, ich habe Paren t entities und ich möchte Child entities in loser Schüttung einfügen, wie dot ich das mit EF Plus

Im Code unten könnte die Anzahl der Eltern zwischen 1000-2000 reichen und die Anzahl der Kinder sind 10-20. Ich möchte dieselben Kinder für jedes Elternteil hinzufügen, wenn die Bedingung erfüllt

public async Task AddChildern(IEnumerable<Child> children)
{
    var ids =  GetIDs();
    var result = _dbContext.Parent.Where(x=> ids.contains(x.ID)).ToListAsync();
   foreach(var p in result)
   {
         foreach(var child in children)
         {
               var flag = CanAddChild(child);
               if(flag)
               {
                    p.Children.Add(child);
               }
         }
   }
}

Expertenantwort

Haftungsausschluss : Ich bin der Eigentümer des Projekts Entity Framework Plus

Diese Bibliothek unterstützt BulkInsert .

Haftungsausschluss : Ich bin der Eigentümer des Projekts Entity Framework Extensions

Diese Bibliothek unterstützt BulkInsert, ist aber nicht kostenlos.

(EF Plus wird von dieser Bibliothek unterstützt)

Da in Ihrem Szenario die BulkSaveChanges Entität keine direkte Beziehung zum übergeordneten BulkSaveChanges (keine Navigationseigenschaft oder übergeordnete ID), sollten Sie die BulkSaveChanges Methode verwenden.

public async Task AddChildern(IEnumerable<Child> children)
{
    var ids =  GetIDs();
    var result = _dbContext.Parent.Where(x=> ids.contains(x.ID)).ToListAsync();
    foreach(var p in result)
    {
         foreach(var child in children)
         {
               var flag = CanAddChild(child);
               if(flag)
               {
                    p.Children.Add(child);
               }
         }
    }
}

// ...code... 

_dbContext.BulkSaveChanges();

EDIT: Antwort Kommentar

Kind hat ParentID

Je nachdem, wie die Beziehung festgelegt ist, können Sie auch eine direkte BulkInsert-Operation ausführen.

public async Task AddChildern(IEnumerable<Child> children)
{
    var ids =  GetIDs();
    var result = _dbContext.Parent.Where(x=> ids.contains(x.ID)).ToListAsync();
    foreach(var p in result)
    {
         foreach(var child in children)
         {
               var flag = CanAddChild(child);
               if(flag)
               {
                    p.Children.Add(child);
               }
         }
    }
}

// ...code... 

_dbContext.BulkSaveChanges();



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum