Я использую EF в приложении WinForms, моя идея состоит в том, чтобы использовать ObjectContext для каждой транзакции, а не один длительный контекст. Но я получаю сообщение об ошибке, когда пытаюсь присоединить объекты из предыдущей транзакции к новой, что связано с тем, что объект уже находится в другом контексте.
Я вроде бы предположил, что сущности отсоединились, когда контекст объекта удаляется, разве это не так ?? (Может я где-то неправильно корректирую контекст). Если сущности не отделяются, есть ли способ сделать это в распоряжении?
EDIT
Очевидно, что сущности не отсоединяются после удаления контекста, как сказал @ F.Aquino, но выполнение чего-то подобного, похоже, работает. Хотя я не уверен, что это правильный способ обработки сущностей. Может быть, кто-то может прокомментировать проблемы, которые могут возникнуть из этого:
public void Attach(params EntityObject[] objects)
{
foreach (EntityObject obj in objects)
{
((IEntityWithChangeTracker)obj).SetChangeTracker(null);
entities.Attach(obj);
}
}
Обычно, когда я хочу присоединить сущность к контексту, я просто обнуляю трекер изменений сущности, а затем просто присоединяю его к новому контексту. Вроде нормально работает.