Skip to content

Latest commit

 

History

History
191 lines (147 loc) · 6.43 KB

README.md

File metadata and controls

191 lines (147 loc) · 6.43 KB

What's Entity Framework Extensions?

Entity Framework Extensions is a library that dramatically improves EF performances by using bulk and batch operations.

People using this library often report performance enhancement by 50x times and more!

Improve Entity Framework performance with Bulk SaveChanges and Bulk Operations

Solve Entity Framework performance issue when saving with high performance bulk operations and hundreds 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

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 performs 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 than 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 operations 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 directly uses 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 offer hundreds 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
  • Star it
  • Share it

A HUGE THANKS for your help.

More Projects

To view all our free and paid projects, visit our website ZZZ Projects.