Entity Framework Entity Framework Extensions
Definition
Entity Framework Extensions ist eine Bibliothek, die die EF-Leistung durch Verwendung von Massen- und Stapelvorgängen erheblich verbessert.
Benutzer, die diese Bibliothek verwenden, berichten oft über eine Verbesserung der Leistung um das 50-fache und mehr!
// Easy to use
context.BulkSaveChanges();
context.BulkInsert(list);
context.BulkUpdate(list);
context.BulkDelete(list);
context.BulkMerge(list);
// Easy to customize
context.BulkMerge(customers, options =>
options.ColumnPrimaryKeyExpression = customer => customer.Code);
BulkSaveChanges-Methode
Die BulkSaveChanges- Methode ist die aktualisierte Version von SaveChanges .
Alle im Kontext vorgenommenen Änderungen werden in der Datenbank gespeichert, sind jedoch wesentlich schneller, da die Anzahl der erforderlichen Datenbankrundfahrten reduziert wird.
BulkSaveChanges unterstützt alles:
- Verein (eins zu eins, eins zu vielen, viele zu vielen usw.)
- Komplexer Typ
- Enum
- Vererbung (TPC, TPH, TPT)
- Navigationseigenschaft
- Selbsthierarchie
- Usw.
BulkSaveChanges-Beispiele
context.Customers.AddRange(listToAdd); // add
context.Customers.RemoveRange(listToRemove); // remove
listToModify.ForEach(x => x.DateModified = DateTime.Now); // modify
// Easy to use
context.BulkSaveChanges();
// Easy to customize
context.BulkSaveChanges(bulk => bulk.BatchSize = 100);
Leistungsvergleiche
Operationen | 1.000 Entitäten | 2.000 Entitäten | 5.000 Entitäten |
---|---|---|---|
Änderungen speichern | 1.000 ms | 2.000 ms | 5.000 ms |
BulkSaveChanges | 90 ms | 150 ms | 350 ms |
Massenoperationsmethoden
Massenoperationsmethoden bieten Ihnen zusätzliche Flexibilität, indem Sie Optionen wie Primärschlüssel, Spalten, untergeordnete Entitäten und mehr anpassen können.
Sie sind auch schneller als BulkSaveChanges, da sie den ChangeTracker nicht verwenden und die DetectChanges- Methode nicht aufrufen.
Massenvorgänge verfügbar:
- BulkInsert
- Bulk-Update
- BulkDelete
- BulkMerge (UPSERT-Betrieb)
Beispiele für Massenoperationen
// Easy to use
context.BulkInsert(list);
context.BulkUpdate(list);
context.BulkDelete(list);
context.BulkMerge(list);
// Easy to customize
context.BulkMerge(customers, options =>
options.ColumnPrimaryKeyExpression = customer => customer.Code; });
Leistungsvergleiche
Operationen | 1.000 Entitäten | 2.000 Entitäten | 5.000 Entitäten |
---|---|---|---|
Änderungen speichern | 1.000 ms | 2.000 ms | 5.000 ms |
BulkInsert | 6 ms | 10 ms | 15 ms |
Bulk-Update | 50 ms | 55 ms | 65 ms |
BulkDelete | 45 ms | 50 ms | 60 ms |
BulkMerge | 65 ms | 80 ms | 110 ms |
Bedarf
Entity Framework-Version
- Entity Framework Core 2.x
- Entity Framework 6.x
- Entity Framework 5