Entity Framework Extensions Insert from Query
Definition
INSERT
all rows from the database using a LINQ Query without loading entities in the context.
An INSERT
statement is built using the LINQ expression and directly executed in the database.
You can INSERT
in any destination table (doesn't have to be part of your model).
// INSERT all customers that are inactive for more than two years into a backup table var date = DateTime.Now.AddYears(-2); context.Customers .Where(x => x.IsActive && x.LastLogin < date) .InsertFromQuery("bck_Customer", x => new { x.CustomerID, x.Name, x.Email });
Purpose
Inserting
entities using SaveChanges
normally requires loading them first in the ChangeTracker
if you want to copy existing ones. These additional round-trips are often not necessary.
InsertFromQuery
gives you access to directly execute an INSERT
statement in the database and provides a HUGE performance improvement.
Performance Comparisons
Operations | 1,000 Entities | 2,000 Entities | 5,000 Entities |
---|---|---|---|
SaveChanges | 1,000 ms | 2,000 ms | 5,000 ms |
InsertFromQuery | 1 ms | 1 ms | 1 ms |
ZZZ Projects