Entity Framework Update Without Loading Discover About Batch Update
How to update without loading entities in the context?
Updating entities using SaveChanges requires typically to load them first in the ChangeTracker. These additional round-trips are often not necessary.
StackOverflow Related Questions
Answer
Entity Framework Extensions library adds the UpdateFromQuery extension method. UpdateFromQuery gives you access to directly execute an UPDATE
statement in the database and provide a HUGE performance improvement.
- UPDATE all rows from the database using a LINQ Query without loading entities in the context.
- An UPDATE statement is built using the LINQ expression and directly executed in the database.
// UPDATE all customers that are inactive for more than two years context.Customers .Where(x => x.IsActive && x.LastLogin < DateTime.Now.AddYears(-2)) .UpdateFromQuery(x => new Customer {IsActive = false}); // UPDATE customers by id context.Customers .Where(x => x.CustomerID == userId) .UpdateFromQuery(x => new Customer {IsActive = false});
Performance Comparisons
Operations | 1,000 Entitie | 2,000 Entities | 5,000 Entities |
---|---|---|---|
SaveChange | 1,000 ms | 2,000 ms | 5,000 ms |
UpdateFromQuery | 1 ms | 1 ms | 1 ms |
ZZZ Projects