POCO Entity Framework 4 с коллекцией шаблонов IRepository была изменена ошибка при удалении

У нас есть шаблон IRepository, который работает очень хорошо с нашей первой настройкой EF и POCO. Однако мы получаем странную проблему с "Коллекция была изменена; операция перечисления может не выполняться".

По сути, у нас есть хранилище с ObjectSet следующим образом:

protected IObjectSet<T> ObjectSet
{
  get
  {
    if (_objectSet == null)
    {
      _objectSet = this.Context.CreateObjectSet<T>();
    }

    return _objectSet;
  }
}

И метод delete для класса IRepository, который реализован следующим образом:

public void Delete(T entity)
{
  ObjectSet.DeleteObject(entity);
}

Это все очень просто, и до этого момента у нас не было никаких проблем, но всякий раз, когда мы пытаемся удалить объект из коллекции, мы получаем эту ошибку. Если я поставлю точку останова на метод удаления, наведенный на ObjectSet, и разверну результаты, чтобы он был полностью загружен, тогда DeleteObject работает нормально, но если не все элементы загружаются из ObjectSet, он завершается ошибкой с измененной коллекцией.

Я установил испытательный стенд, не используя POCO или IRepository, и он работает нормально, так что в основном есть что-то действительно неясное, что я пропускаю. Мы довольно глубоко используем этот шаблон в нескольких проектах, и люди работают над этим, вместо того, чтобы пытаться исправить это, что я не думаю, что это вариант.

Большое спасибо за любую помощь или понимание.

РЕДАКТИРОВАТЬ:

Это очень странно, но когда я удаляю некоторые сущности из модели, эта ошибка исчезает, но у нас огромная модель, и я не могу отследить ее, так как сначала удалил все, кроме определенных таблиц в удалении. Кто-нибудь когда-либо сталкивался с этим раньше, мы используем таблицы наследования (для каждого типа), но я не могу доказать, что это проблема.

ВТОРОЙ РЕДАКТИРОВАТЬ:

ОК. Я удалил все из модели, кроме таблицы для каждого типа наследования, и возникает ошибка, когда я удаляю все, кроме одного производного типа, и пытаюсь удалить, что он работает нормально. Итак, мой вопрос: кто-нибудь еще имел эту проблему при использовании таблицы для каждого типа наследования?

1 ответ

Решение

Это ошибка в Entity Framework. Исправлено в 4.5 в соответствии с подключением.

Другие вопросы по тегам