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 в соответствии с подключением.