Обратите внимание, что если отслеживание изменений отключено в вашем контексте, запрос ObjectStateManager
или ChangeTracker
может возвратить, что объект не находится в ObjectContext
, даже если он на самом деле уже находится втам.Поэтому, если вы попытаетесь прикрепить такой объект, это вызовет исключение.
context.Set<T>.Local.Any(e => e.Id == id);
работает событие, если отслеживание изменений отключено.
, если вы не знаете тип объекта, тамЭто другой подход, либо вы определяете метод с использованием отражения, либо другие методы, подобные этому int GetIdOf(object entity){...}
Или вы определяете интерфейс, используемый вашими классами, например
public interface IMyEntity
{
int Id{get;set;}
}
, и используете его таким образом:
context.Set(e.GetType()).Local.Cast<IMyEntity>().Any(e => e.Id == id);