DELETE all rows from the database using a LINQ Query without loading entities in the context.
DELETE statement is built using the LINQ expression and directly executed in the database.
Deleting entities using
SaveChanges normally require to load them first in the
ChangeTracker. These additional round-trips are often not necessary.
DeleteFromQuery give you access to directly execute a
DELETE statement in the database and provide a HUGE performance improvement.
|Operations||1,000 Entities||2,000 Entities||5,000 Entities|
|SaveChanges||1,000 ms||2,000 ms||5,000 ms|
|DeleteFromQuery||1 ms||1 ms||1 ms|
Why DeleteFromQuery is faster than SaveChanges, BulkSaveChanges, and BulkDelete?
DeleteFromQuery execute a statement directly in SQL such as
DELETE FROM [TableName] WHERE [Key].
Other operations normally require one or multiple database round-trips which make the performance slower.