How do I clear tracked entities in entity framework

后端 未结 6 1241
不知归路
不知归路 2020-12-04 20:50

I am running some correction code that runs over a big pile of entities, as it progress its speed decreases, that is because the number of tracked entities in the context in

6条回答
  •  生来不讨喜
    2020-12-04 21:29

    You can add a method to your DbContext or an extension method that uses the ChangeTracker to detach all the Added, Modified, and Deleted entities:

    public void DetachAllEntities()
    {
        var changedEntriesCopy = this.ChangeTracker.Entries()
            .Where(e => e.State == EntityState.Added ||
                        e.State == EntityState.Modified ||
                        e.State == EntityState.Deleted)
            .ToList();
    
        foreach (var entry in changedEntriesCopy)
            entry.State = EntityState.Detached;
    }
    

提交回复
热议问题