Entity Framework Bulk Operations | Improve Entity Framework performance with Bulk SaveChanges, Insert, update, delete and merge for SQL Server, SQL Azure, SQL Compact, MySQL and SQLite.
Latest commit fb5d08c Sep 14, 2018
Permalink
Failed to load latest commit information.
docs Update articles.md Jul 31, 2018
docs2/pages Update update-from-query.md Sep 13, 2018
src Create readme.txt Mar 17, 2017
README.md Update README.md Sep 21, 2017
version.txt Update version.txt Nov 9, 2017

README.md

Improve Entity Framework performance with Bulk SaveChanges and Bulk Operations

Solve Entity Framework performance issue when saving with high performance bulk operations and hundred of flexibles feature.

  • BulkSaveChanges
  • BulkInsert
  • BulkUpdate
  • BulkDelete
  • BulkMerge
  • DeleteFromQuery
  • UpdateFromQuery
var context = new CustomerContext();
// ... context code ...

// Easy to use
context.BulkSaveChanges();

// Easy to customize
context.BulkSaveChanges(operation => operation.BatchSize = 1000);
// Perform specific bulk operations
context.BulkDelete(customers);
context.BulkInsert(customers);
context.BulkUpdate(customers);

// Customize Primary Key
context.BulkMerge(customers, operation => {
   operation.ColumnPrimaryKeyExpression = customer => customer.Code;
});
Scalable

SQL Server - Benchmarks

Operations 100 Rows 1,000 Rows 10,000 Rows
BulkSaveChanges 20 ms 200 ms 2,000 ms
BulkInsert 2 ms 6 ms 25 ms
BulkUpdate 27 ms 50 ms 80 ms
BulkDelete 25 ms 45 ms 70 ms
BulkMerge 30 ms 65 ms 160 ms
Extensible

Support Multiple SQL Providers:

  • SQL Server 2008+
  • SQL Azure
  • SQL Compact
  • MySQL
  • SQLite
  • PostgreSQL
  • Oracle

Download

Entity Framework Core (EF Core)

download

PM> Install-Package Z.EntityFramework.Extensions.EFCore

Entity Framework 6 (EF6)

download

PM> Install-Package Z.EntityFramework.Extensions

Entity Framework 5 (EF5)

download

PM> Install-Package Z.EntityFramework.Extensions.EF5

* PRO Version unlocked for the current month

Stay updated with latest changes

Twitter Follow Facebook Like

BulkSaveChanges

Problem

You need to save hundreds or thousands of entities but you are not satisfied with Entity Framework performance.

Solution

BulkSaveChanges is exactly like SaveChanges but perform way faster. It’s easy to use, you only need to replace “SaveChanges” by “BulkSaveChanges” and you are done!

// Upgrade SaveChanges performance with BulkSaveChanges
var context = new CustomerContext();
// ... context code ...

// Easy to use
context.BulkSaveChanges();

// Easy to customize
context.BulkSaveChanges(operation => operation.BatchSize = 1000);
Scalability

BulkSaveChanges is as fast as SaveChanges with one entity and quickly become 10-50x faster with hundreds and thousands of entities.

Bulk Operations

Problem

You need even more performance then BulkSaveChanges, save detached entities or save entities in a specific order.

Solution

Use bulk operations such as bulk insert, update, delete and merge which perform operation on specified entities and bypass the change tracker to increase performance.

// Perform specific bulk operations on entities
context.BulkDelete(customers);
context.BulkInsert(customers);
context.BulkUpdate(customers);
context.BulkMerge(customers);
Maintainability

Bulk Operation use directly the Entity Framework Model. Even if you change column name or change inheritance (TPC, TPH, TPT), Bulk operation will continue to work as expected.

Custom Key

Problem

You need to perform an update, delete or merge using a specific custom key like the custom code.

Solution

Specify your own key by customizing the operation.

// Use flexible features such as specifying the primary key
context.BulkMerge(customers, operation => {
   operation.ColumnPrimaryKeyExpression = customer => customer.Code;
});
Flexibility

Bulk operations offers hundred of customization such as BatchSize, Custom Key, Custom Mapping, etc.

PRO Version

PRO Version unlocked for the current month

Features PRO Version
Bulk SaveChanges Yes
Bulk Insert Yes
Bulk Update Yes
Bulk Delete Yes
Bulk Merge Yes
DeleteFromQuery Yes
UpdateFromQuery Yes
Commercial License Yes
Royalty-Free Yes
Support & Upgrades (1 year) Yes
Learn more about the PRO Version

Contribute

The best way to contribute is by spreading the word about the library:

  • Blog it
  • Comment it
  • Fork it
  • Star it
  • Share it

A HUGE THANKS for your help.

More Projects

Entity Framework

Bulk Operations

Expression Evaluator

Utilities

Need more info? info@zzzprojects.com

Contact our outstanding customer support for any request. We usually answer within the next business day, hour, or minutes!