Entity Framework Extensions Reduce your save times by up to 95% - Easy to Use, Easy to Customize



Downloads:
57004752
Worldwide Customers:
5000+

Read Testimonials

Improve EF Core and EF6 Performance

Have you ever used a software and wondered why it takes so long to perform a task?

Ensure your clients don't have the same frustrating experience by delivering them the best performance.

Compared to SaveChanges, your performance could improve significantly:

You do not believe us? Take a few seconds to click on our "Online Benchmark" link and see our library in action with your own eyes.

You see, even convincing you about those performance are real was fast!

Our library is at its best when you need to import or save hundreds, thousands or even millions of entities in your database.

SaveChanges vs Bulk Insert

Operations 1,000 Entities 2,000 Entities 5,000 Entities
SaveChanges 1,200 ms 2,400 ms 6,000 ms
BulkInsert 50 ms 55 ms 75 ms

Supported Providers

SQL Server
SQL Azure
PostgreSQL
SQLite
MySQL

The Sky Space is the Limit
Companies from every sector trust us

Aerospace Aerospace
Government Government
Healthcare Healthcare
Banking Banking
University University
Technology Technology
Industrial Industrial
Automobiles Automobiles


Since 2014, over 5,000 companies have chosen to put their trust with ZZZ Projects

From small businesses to Fortune 100, we work together to make your projects a success

Main Features

Bulk Extensions

Save your entities 90% faster, use only a fraction of the memory, and gain access to 100+ options to customize your saves. Experience the difference.

// 100+ options to customize your saves

// Insert only customers that don't exist with a custom key
context.BulkInsert(customers, options => { 
    options.InsertIfNotExists = true;
    options.ColumnPrimaryKeyExpression = customer => customer.Code;
});

// Merge (Upsert) with related child entities (Order, OrderItem)
context.BulkMerge(orders, options => {
    options.IncludeGraph = true;
});
Try Online Example

Bulk SaveChanges

Dramatically improve your client performance and look like an expert by simply adding four letters: Bulk. No reason to hesitate to try it; it couldn't be simpler!

// Just add "Bulk" prefix to "SaveChanges()"

// Easy to use
context.BulkSaveChanges();

// Easy to customize
context.BulkSaveChanges(options => options.BatchSize = 1000);
Try Online Example

Bulk Contains

Go beyond Contains method limitations. Use our methods with an unlimited number of entities, with any kind of data source, and join with one or multiple properties.

// Supports: 
//    - Unlimited number of items
//    - Multiple DataSources: Basic Type, Entity Type, Anonymous Type, Expando
//    - Surrogate keys (joins on multiple properties)

// Return customers from the database matching customers from the list
var databaseCustomers = context.Customers.WhereBulkContains(listCustomers);

// Return customers from the list matching customers from the database
// Additionally, use a surrogate key
var sourceCustomers = context.Customers
    .WhereBulkContainsFilterList(listCustomers, x => new { x.Email, x.Name });
Try Online Example

Batch Operations

Use the power of LINQ to INSERT, UPDATE, and DELETE directly in your database. Maximize your performance without loading entities.

var dateToDeactivate = DateTime.Now.AddYears(-2);

// UPDATE active customers who haven’t logged in recently
context.Customers
    .Where(x => x.IsActive && x.LastLogin < dateToDeactivate)
    .UpdateFromQuery(x => new Customer { IsActive = false });

// INSERT inactive customers into a backup table
context.Customers
    .Where(x => !x.IsActive && !x.Invoices.Any())
    .InsertFromQuery("bck_Customers",
        x => new { x.CustomerID, x.Code, x.Name, x.Email, x.LastLogin });

// DELETE inactive customers
context.Customers
    .Where(x => !x.IsActive && !x.Invoices.Any())
    .DeleteFromQuery();
Try Online Example

Learn what people like about ZZZ Projects

Read our Google Review:

- "Absolute must have library"
- "Highly recommended for its performance and ease of use"
- "In less than 10 minutes I was upserting large recordsets"
- "Take your application development to the next level"
- "Cut processes time from hours to minutes"
- "Making things simpler and faster"
- "Saves a lot of processing time"
- "Delivered on its promises"
- "Incredibly fast they reply"
- "Extensions are well-written and self-explanatory"
- "Releases product updates in a very short time"
- "Good human values and are helpful"


Read All Google Reviews

Win a FREE License

Every month, we offer a free license to people in exchange of a feedback

Click on "Enter Contest" and leave us a feedback:

- "Installed the nugget package, read a little bit of documentation, and in less than 10 minutes, the problem was solved ! Dividing my update time by 5x"
- "This extension has help reduce the code from 5- 10 lines to one line"
- "This library has saved us tons of development time and improved our application tremendously."
- "Previously, this process would take approximately 2 to 3 minutes, but with Entity Framework Extensions, it has been reduced to a mere 5 to 10 seconds."
- "I've done couple of test with thousands of simultaneous merge and the performance are impressive"
View All Winner Feedback


Enter Contest