我们的EF和POCO首次设置时,我们的IRepository模式运行良好。但是,我们遇到一个奇怪的问题,“收集被修改;枚举操作可能无法执行”。
基本上我们有一个带有ObjectSet的存储库,如下所示:
protected IObjectSet<T> ObjectSet
{
get
{
if (_objectSet == null)
{
_objectSet = this.Context.CreateObjectSet<T>();
}
return _objectSet;
}
}
对IRepository类的删除方法实现如下:
public void Delete(T entity)
{
ObjectSet.DeleteObject(entity);
}
这一切都非常简单,直到这一点我们都没有遇到任何问题,但每当我们尝试删除集合的对象时,我们都会收到此错误。如果我将删除方法上的断点悬停在ObjectSet上并展开结果以便全部加载,那么DeleteObject工作正常,但如果未从ObjectSet加载所有项目,则它会因集合修改错误而失败。
我设置了一个不使用POCO或IRepository的测试平台,它工作正常,所以基本上有一些我很遗憾的东西。我们非常深入地在多个项目中使用这种模式,人们一直在努力解决它,而不是我不认为的选择。
非常感谢任何帮助或见解。
编辑:
这很奇怪但是当我从模型中删除某些实体时,这个错误就消失了,但是我们有一个巨大的模型,我无法跟踪它,因为我首先删除了除删除中的特定表之外的所有内容。有没有人曾经遇到过这种情况,我们正在使用继承表(每种类型),但我无法证明这是问题所在。
第二次编辑:
好的我从模型中删除了所有内容,除了每个类型的表继承entites并且发生错误,当我删除除了一个派生类型之外的所有类型并尝试从中删除它工作正常。所以我的问题是,在使用每种类型的继承表时,还有其他人遇到过这个问题吗?
答案 0 :(得分:0)
这是Entity Framework中的一个错误。根据连接修正了4.5。