Да, есть способ.ObjectContext
экземпляр предлагает свойство с именем ObjectStateManger
.ObjectStateManager
управляет всеми присоединенными объектами и знает их состояние:
ObjectStateEntry entry = context.ObjectStateManager.GetObjectStateEntry(attachedEntity);
EntityState state = entry.State;
Если вам нужно получить все измененные или добавленные объекты, вы можете использовать:
var entities = context.ObjectStateManager
.GetObjectStateEntries(EntityState.Added | EntitiSate.Modified)
.Select(e => e.Entity);
Вы можете использовать в дальнейшем OfType
, чтобы выбрать только объекты некоторого типа.Вы также можете использовать эту логику SaveChanges
, как описано много раз для переполнения стека - например, здесь .