Verwijderen van reeksen in Entity Framework header image

Verwijderen van reeksen in Entity Framework

donderdag 23 december 2021 ·Leestijd: 1 minuut
contacteer auteur:

Het verwijderen van entities en reeksen in Entity Framework is eenvoudig, maar er zijn wel dingen waar je op moete letten als je veel items in één keer wilt verwijderen.

Eén item verwijderen

In Entity Framework verwijder je een entity als volgt:

var itemToDelete = context.Items.First();

context.Items.Remove(itemToDelete);

context.SaveChanges();

items is hier een DbSet van het type Item. In de SQL Server Profiler, die je kan openen vanuit SQL Server Management Studio, kan je goed zien welke queries worden uitgevoerd:

Eerst:

SELECT TOP (1)

    [c].[Id] AS [Id],

    [c].[Name] AS [Name]

    FROM [dbo].[Item] AS [c]

Daarna, na SaveChanges:

exec sp_executesql N'DELETE [dbo].[Item]

WHERE ([Id] = @0)',N'@0 int',@0=2

Want het item met Id 2 was de eerste in de collectie en deze wordt nu verwijderd.

Een reeks verwijderen

Als ik de eerste 1000 wil verwijderen, doe ik:

var itemsToDelete = context.Items.Take(100).ToList();

context.Items.RemoveRange(itemsToDelete);

context.SaveChanges();

In de SQL Server Profiler zie je:

SELECT TOP (100)

    [c].[Id] AS [Id],

    [c].[Name] AS [Name]

    FROM [dbo].[Item] AS [c]

En daarna eerst:

exec sp_executesql N'DELETE [dbo].[Item]

WHERE ([Id] = @0)',N'@0 int',@0=4

En daarna:

exec sp_executesql N'DELETE [dbo].[Item]

WHERE ([Id] = @0)',N'@0 int',@0=5

En dat 100 keer.

Efficiënt een reeks verwijderen

RemoveRange zal altijd de items verwijderen _per item_. Dat kan te inefficiënt zijn en in dat geval zal je direct een query in de database moeten uitvoeren:

context.Database.ExecuteSqlCommand("DELETE [dbo].[Item] WHERE [Id] IN(SELECT TOP(5000) [Id] FROM [dbo].[Item])");

Het verschil bij het verwijderen van 5000 items?

RemoveRange: 1000 ms.

ExecuteSqlCommand: 51 ms.


Andere blogartikelen

Integraties met API's van verschillende partijen
Geschreven door
op donderdag 30 juni 2022
Bij Sigma Solutions maken wij integraties met verschillende partijen, die ervoor zorgen dat jouw bedrijfsproces geautomatiseerd en gedigitaliseerd kan worden. We zijn constant op zoek naar passende oplossingen voor onze klanten.
Wat is B2B Online Advertising?
Geschreven door
op donderdag 30 juni 2022
B2B Online Advertising is een marketingstrategie die bedoeld is om een zakelijke boodschap over te brengen aan andere bedrijven door middel van advertenties.
Als traditioneel bedrijf succesvol blijven in een tijdperk van digitalisering
Geschreven door
op donderdag 30 juni 2022
Wil je als traditioneel bedrijf succesvol blijven in een tijdperk van 'digital natives'? Lees dan deze blogpost!
Open Nieuwsbrief Inschrijving Footer

E-book

Zo wordt uw website een lead generator 
In 3 stappen uw website van visitekaartje naar salesfunnel

Download het E-book â€º