DbContext использует ObjectContext для внутреннего использования, и команда EF делает его доступным как свойство защищенное на тот случай, если вам когда-нибудь понадобится перейти на API нижнего уровня, и это звучит так, как здесь, поэтому вы можетеиспользуйте или предоставьте необходимые функции из производного DbContext:
public class YourContext : DbContext
{
public void Detach(object entity)
{
ObjectContext.Detach(entity);
}
}
Затем вы можете вызвать этот метод из вашего контроллера, чтобы отсоединить сущность.
В качестве альтернативы, вы можете изменить его, чтобы даже иметьболее богатый API:
public class YourContext : DbContext
{
public void ChangeObjectState(object entity, EntityState entityState)
{
ObjectContext.ObjectStateManager.ChangeObjectState(entity, entityState);
}
}
Вот как DbContext выглядит из метаданных:
public class DbContext : IDisposable
{
protected System.Data.Objects.ObjectContext ObjectContext { get; }
...
}