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);
}
}
}
}
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.
_dbContext.BulkInsert(result.SelectMany(x => x.Children));