Changetracker.entries returning new entries

A ChangeTracker in Entity Framework Core!

ChangeTracker.Entries returns a collection of EntityEntry objects that represent the changes made to entities in the context. When you call Entries on a ChangeTracker, it returns a snapshot of the changes made to the entities in the context.

If you're seeing new entries returned from Entries, it's likely because the context has been updated with new changes since the last time you called Entries. Here are a few possible reasons why this might be happening:

  1. New entities have been added: If you've added new entities to the context using Add or AddRange, those entities will be included in the Entries collection.
  2. Existing entities have been modified: If you've modified existing entities in the context, those changes will be reflected in the Entries collection.
  3. The context has been refreshed: If the context has been refreshed or reloaded from the database, the Entries collection may contain new changes.

To get the new entries, you can simply call Entries again on the ChangeTracker. If you want to get only the new entries, you can use the Added or Modified properties on the ChangeTracker to filter the results:

var newEntries = changeTracker.Entries()
   .Where(e => e.State == EntityState.Added || e.State == EntityState.Modified);

This will give you a collection of EntityEntry objects that represent the new or modified entities in the context.

If you're trying to track changes to specific entities, you can use the Entries method with a lambda expression to filter the results:

var newEntries = changeTracker.Entries<MyEntity>()
   .Where(e => e.State == EntityState.Added || e.State == EntityState.Modified);

This will give you a collection of EntityEntry objects that represent the new or modified MyEntity entities in the context.