GeezerVison is showing entityframework-extensions.net — EF Core & EF6 Bulk Operations – Save Data Faster with EF Extensions
Entity Framework Extensions
Reduce your save times by up to 95% - Easy to Use, Easy to Customize
Worldwide Customers:
5,000+
Improve EF Core and EF6 Performance
Have you ever used a software tool and wondered why it takes so long to perform a simple task?
Make sure your clients never face that same frustration — deliver them the fastest data-saving performance possible.
Compared to SaveChanges, your performance could improve significantly:
Don’t just take our word for it — click our Online Benchmark link and see the results with your own eyes.
You see? Even convincing you that these performance gains are real was fast!
Our library shines when you need to import or save hundreds, thousands, or even millions of entities efficiently 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 |
// @nuget: Z.EntityFramework.Extensions.EFCore
using Z.EntityFramework.Extensions;
// Easy to use
context.BulkInsert(customers);
// Easy to customize
context.BulkInsert(invoices, options => options.IncludeGraph = true);
Supported Providers
Supports SQL Server, SQL Azure, PostgreSQL, SQLite, Oracle, MySQL, MariaDB
}
Supported Entity Framework Versions
Supports EF Core 10, 9, 8, 7 ,6, 5, 3, 2
Supports EF6, EF5, EF4
The Sky Space is the Limit
Companies from every sector trust us
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 95% 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"
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"
|