В потоке 1 у меня есть:отсоединение объект из всех открытых контекстов
MyDbContext contextInstance1 = new MyDbContext();
var entity = contextInstance1.EntityDbSet.First();
// Some work with the entity goes here....
И в потоке 2:
//The entity is passed as an argument from thread 1
contextInstance2.EntityDbSet.Attach(entity);
contextInstance2.EntityDbSet.Remove(entity);
И я получаю следующее сообщение об ошибке:
Субъект объект не может ссылаться на несколько экземпляров IEntityChangeTracker.
Если я удаляю строку Attach(), у меня есть ошибка, говорящая, что сущность не может быть удалена перед первым подключением.
Я понимаю, что мне нужно делать, но я не вижу, как это сделать в этой ситуации. Моя проблема в том, что я не имею ссылки на (и не знаю) contextInstance1 в thread2.
Поэтому я ищу способ отделить объект от 1-го контекста, прежде чем присоединять его к другому контексту. Если EF знает, что существует другой экземпляр контекста, должен быть способ доступа к нему, вот что мне нужно.
http://stackoverflow.com/questions/18925111/turn-off-ef -change-tracking-for-any-instance-of-the-context, это поможет –
Я надеюсь, что потоки не будут проходить параллельно? –
Почему? =/Они, вероятно, делают. – reddy