• Stars
    star
    344
  • Rank 123,066 (Top 3 %)
  • Language
    C#
  • Created almost 9 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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.

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.

More Repositories

1

html-agility-pack

Html Agility Pack (HAP) is a free and open-source HTML parser written in C# to read/write DOM and supports plain XPATH or XSLT. It is a .NET code library that allows you to parse "out of the web" HTML files.
C#
2,635
star
2

EntityFramework-Plus

Entity Framework Plus extends your DbContext with must-haves features: Include Filter, Auditing, Caching, Query Future, Batch Delete, Batch Update, and more
C#
2,251
star
3

Z.ExtensionMethods

C# Extension Methods | Over 1000 extension methods:
C#
1,574
star
4

System.Linq.Dynamic.Core

The .NET Standard / .NET Core version from the System Linq Dynamic functionality.
C#
1,555
star
5

EntityFramework.Extended

Add-on feature for Entity Framework
C#
1,339
star
6

EntityFramework.DynamicFilters

Global filtering for Entity Framework.
C#
501
star
7

Eval-Expression.NET

C# Eval Expression | Evaluate, Compile, and Execute C# code and expression at runtime.
C#
452
star
8

EntityFramework-Effort

Entity Framework Effort is a powerful tool that enables a convenient way to create automated tests for Entity Framework based applications.
C#
431
star
9

System.Linq.Dynamic

[Deprecated] This is the Microsoft assembly for the .Net 4.0 Dynamic language functionality.
425
star
10

Dapper-Plus

Dapper Plus - High-Efficient Bulk Actions (Insert, Update, Delete, and Merge) for .NET
C#
384
star
11

GraphDiff

GraphDiff is a library that allows the automatic update of a detached graph using Entity Framework code first.
C#
333
star
12

sqlfiddle3

New version based on vert.x and docker
JavaScript
331
star
13

sqlfiddle

JavaScript
275
star
14

findandreplace

fnr.exe - Find and Replace (FNR) is an open source tool to find and replace text in multiple files. It can quickly search through large numbers of files and also find the information using regular expressions specifying the form of what you want, instead of literal text.
C#
243
star
15

nmemory

NMemory is a lightweight non-persistent in-memory relational database engine that is purely written in C# and can be hosted by .NET applications.
C#
232
star
16

sqlfiddle2

New version of SQL Fiddle based on OpenIDM
JavaScript
195
star
17

Bulk-Operations

C# SQL Bulk Operations | High-performance C# bulk insert, update, delete and merge for SQL Server, SQL Azure, SQL Compact, MySQL, and SQLite.
C#
142
star
18

zzzcode.ai

AI Website for developers. Use ChatGPT to answer questions, write code, and more.
108
star
19

EntityFramework-Classic

Entity Framework Classic is a supported version of the latest EF6 codebase. It supports .NET Framework and .NET Core and overcomes some EF limitations by adding tons of must-haves built-in features.
C#
102
star
20

LINQ-Async

C# LINQ Async extension methods library for async/await task.
C#
101
star
21

Eval-SQL.NET

SQL Eval Function | Dynamically Evaluate Expression in SQL Server using C# Syntax.
C#
95
star
22

EntityFrameworkExtras

EntityFrameworkExtras provides some useful additions to EntityFramework such as executing Stored Procedures with User-Defined Table Types and Output Parameters.
C#
80
star
23

awesome-entity-framework-core

Awesome EF Core third party-libraries, documentation, and tutorials!
57
star
24

Dapper.Transaction

IDbTransaction extension methods for Dapper: A high performance Micro-ORM supporting SQL Server, MySQL, Sqlite, SqlCE, Firebird etc..
C#
29
star
25

awesome-dapper

Awesome Dapper third party-libraries, documentation, and tutorials!
16
star
26

EntityFramework6-DotNetStandard

The support has been moved here: https://github.com/zzzprojects/EntityFramework-Classic
C#
13
star
27

awesome-entity-framework-6

Awesome EF6 third party-libraries, documentation, and tutorials!
12
star
28

Compiler-Expression.NET

C# Code Compiler | Code Analysis and Code Compiler for Eval-Expression.NET and Eval-SQL.NET
12
star
29

awesome-csharp-expression-evaluator

Awesome C#/.NET Expression Evaluator third party-libraries, documentation, and tutorials!
8
star
30

LinqToSql-Plus

LinqToSql Plus is a library that dramatically improves LinqToSql performances by using bulk and batch operations.
6
star
31

docs

5
star
32

learn-orm

learn-orm
C#
5
star
33

sqlite-provider

sqlite-provider
C
2
star